热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

[百度地图]ZMap与MultiZMap封装类说明;

ZMap.js与MultiZMap说明1.ZMap与MultiZMap都是封装一些地图常用的使用方法,类方法功能大多使用prototype原型实现;ZMap在一个页面只能使用一次;

ZMap.js 与 MultiZMap 说明

1. ZMap 与 MultiZMap 都是封装一些地图常用的使用方法,类方法功能大多使用 prototype 原型 实现;

ZMap 在一个页面只能使用一次;多次使用会冲突;

MultiZMap 在一个页面上可以使用多次,它是 ZMap 的多加载版本,主要用于类似 DWZ 这个 多标签的 UI 的框架;

2. 包含的功能有:轨迹回放,圈画区域可编辑,判断几个坐标是否在一个圆圈内,生活服务查询,
从经纬度获取地址信息,地图工具包括测距,获取面积,以积打印地图,地图全屏,实时路况,坐标是否在polygon区域内,
打车方案,经过中间途经点,添加地图控件;

3. 功能界面:

地图界面:
技术分享

相关源码

介绍MultiZMap.js 使用,ZMap类似;

1. 相关脚本引入:

<link href="http://api.map.baidu.com/library/TrafficControl/1.4/src/TrafficControl_min.css" rel="stylesheet" type="text/css" />
    <script type="text/Javascript" src="/devices/scripts/jquery-1.7.2.js">script>
    <script type="text/Javascript" src="http://api.map.baidu.com/api?v=1.2&services=true">script>
    <script type="text/Javascript" src="http://api.map.baidu.com/library/DistanceTool/1.2/src/DistanceTool_min.js">script>
    <script type="text/Javascript" src="http://api.map.baidu.com/library/TrafficControl/1.4/src/TrafficControl_min.js">script>  
    <script type="text/Javascript" src="/devices/scripts/GeoUtils.js">script>
    <script type="text/Javascript" src="/devices/scripts/MultiZMap.js">script>

2. HTML 结构:

<div id="container" style="margin:0px auto; width:700px; height:600px; padding-bottom: -40px; overflow: hidden;">
        <div id="panel" style="height:30px; width:100%; display:none; background: #6485ed;">
            <span>Xspan>
        div>
        <div id="istmap" style="width:100%; height:640px;">div>
div>

3. 地图初始化创建:

var multiMap;
function initMap() {
            multiMap = new MultiZMap({
                container: ‘container‘,
                mapId: ‘istmap‘
            });
    multiMap.create();
}

4. 使地图可滚轮放大缩小:

multiMap.enables.scrollWheel();

5. 添加工具控件:

multiMap.controls.addNavi({});
multiMap.controls.addScale({offset:new BMap.Size(0, 40)});
multiMap.controls.addOverview({isOpen: true, offset:new BMap.Size(0, 40)});
multiMap.controls.addMapType({});

6. 轨迹回放:

var guiji ;
function guiJiMap() {
    guiji = new multiMap.GuiJiPlay({
                marker: {
                    marker: null,
                    label:‘车‘
                }
            });
            var pointsStr = ‘116.401072,39.913859-116.401242,39.913859-116.401431,39.913873-116.401844,39.913886-116.402257,39.9139-116.402608,39.9139-116.402994,39.913914-116.403416,39.913928-116.403784,39.913942-116.404135,39.913949-116.404557,39.913962-116.405015,39.913997-116.405455,39.914004-116.405815,39.914011-116.406228,39.914045-116.406587,39.914045-116.406955,39.914059-116.407719,39.914052-116.40886,39.914108-116.408788,39.914101-116.409192,39.914101-116.409462,39.914108-116.409848,39.914115-116.410297,39.914163-116.410953,39.914239‘;
    var arrs = pointsStr.split(‘-‘);
    guiji.set(arrs);
}

guiji.set有第二个参数,可设置Marker显示;

7. 画圈,可编辑:

var linearea;
function lineAreaMap() {
    linearea = new multiMap.lineArea({
                color:‘red‘,
                callback : function(points, gon) {
                    
                }
            });
}

linearea.edit(); 可编辑;

8. 查看物体集合是否在圆圈内:

function circleSearchMap() {
    var cars = [‘116.40329,39.915851‘, ‘116.403757,39.915816‘, ‘116.403722,39.915284‘, ‘116.40303,39.91482‘, ‘116.402455,39.915138‘,‘116.402105,39.915464‘,‘116.403308,39.915706‘,‘116.405392,39.914654‘];
            
    multiMap.setZoom(18);
    var point = multiMap.getPoint(‘116.40329,39.915851‘);
    multiMap.panTo(point);
    var inC = new multiMap.inCircleSearch();
    inC.set({
                point: point,
                distance: 200,
                markered : true,
                show : true,
                sign : {
                    Yes: ‘在圈内‘
                }
            });
    inC.searchs(cars);
    multiMap.enables.scrollWheel();
}

9. 地图全屏

var fullmap;
function fullMap() {
    fullmap = new multiMap.XfullMap({
                //container : ‘container‘,
                //mapId : ‘istmap‘,
                fullfunc : function() {
                    $(‘#panel‘).css(‘display‘,‘block‘);
                },
                origifunc : function() {
                    $(‘#panel‘).css(‘display‘,‘none‘);
                }
            });
        var point = multiMap.mapObj.getCenter();
    fullmap.toFull(point);
}

关闭全屏:

var point = multiMap.mapObj.getCenter();
fullmap.toOrigi(point);

12. 事件管理:

1. 地图事件管理:

mutlMap.addListener(‘eventType‘, function(e) {
    //添加 地图 eventType 类型事件;
});

multiMap.events.add(‘唯一事件Key‘, MapItem, ‘eventType‘, function(e) {
    //添加 地图控件MapItem, eventType 类型事件;
});

源码下载 

源码下载:http://files.cnblogs.com/editor/MultiZMap2.rar

本项目源码采用 SpringMvc+Maven搭建,src/main/webapps 下即是 脚本源码;

[百度地图] ZMap 与 MultiZMap 封装类说明;


推荐阅读
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • 基于layUI的图片上传前预览功能的2种实现方式
    本文介绍了基于layUI的图片上传前预览功能的两种实现方式:一种是使用blob+FileReader,另一种是使用layUI自带的参数。通过选择文件后点击文件名,在页面中间弹窗内预览图片。其中,layUI自带的参数实现了图片预览功能。该功能依赖于layUI的上传模块,并使用了blob和FileReader来读取本地文件并获取图像的base64编码。点击文件名时会执行See()函数。摘要长度为169字。 ... [详细]
  • Java验证码——kaptcha的使用配置及样式
    本文介绍了如何使用kaptcha库来实现Java验证码的配置和样式设置,包括pom.xml的依赖配置和web.xml中servlet的配置。 ... [详细]
  • 本文介绍了指针的概念以及在函数调用时使用指针作为参数的情况。指针存放的是变量的地址,通过指针可以修改指针所指的变量的值。然而,如果想要修改指针的指向,就需要使用指针的引用。文章还通过一个简单的示例代码解释了指针的引用的使用方法,并思考了在修改指针的指向后,取指针的输出结果。 ... [详细]
  • 在project.properties添加#Projecttarget.targetandroid-19android.library.reference.1..Sliding ... [详细]
  • 猜字母游戏
    猜字母游戏猜字母游戏——设计数据结构猜字母游戏——设计程序结构猜字母游戏——实现字母生成方法猜字母游戏——实现字母检测方法猜字母游戏——实现主方法1猜字母游戏——设计数据结构1.1 ... [详细]
  • CentOS 7部署KVM虚拟化环境之一架构介绍
    本文介绍了CentOS 7部署KVM虚拟化环境的架构,详细解释了虚拟化技术的概念和原理,包括全虚拟化和半虚拟化。同时介绍了虚拟机的概念和虚拟化软件的作用。 ... [详细]
  • 本文介绍了一种解析GRE报文长度的方法,通过分析GRE报文头中的标志位来计算报文长度。具体实现步骤包括获取GRE报文头指针、提取标志位、计算报文长度等。该方法可以帮助用户准确地获取GRE报文的长度信息。 ... [详细]
  • CentOS 6.5安装VMware Tools及共享文件夹显示问题解决方法
    本文介绍了在CentOS 6.5上安装VMware Tools及解决共享文件夹显示问题的方法。包括清空CD/DVD使用的ISO镜像文件、创建挂载目录、改变光驱设备的读写权限等步骤。最后给出了拷贝解压VMware Tools的操作。 ... [详细]
  • 深入理解CSS中的margin属性及其应用场景
    本文主要介绍了CSS中的margin属性及其应用场景,包括垂直外边距合并、padding的使用时机、行内替换元素与费替换元素的区别、margin的基线、盒子的物理大小、显示大小、逻辑大小等知识点。通过深入理解这些概念,读者可以更好地掌握margin的用法和原理。同时,文中提供了一些相关的文档和规范供读者参考。 ... [详细]
  • Redis底层数据结构之压缩列表的介绍及实现原理
    本文介绍了Redis底层数据结构之压缩列表的概念、实现原理以及使用场景。压缩列表是Redis为了节约内存而开发的一种顺序数据结构,由特殊编码的连续内存块组成。文章详细解释了压缩列表的构成和各个属性的含义,以及如何通过指针来计算表尾节点的地址。压缩列表适用于列表键和哈希键中只包含少量小整数值和短字符串的情况。通过使用压缩列表,可以有效减少内存占用,提升Redis的性能。 ... [详细]
  • 本文介绍了django中视图函数的使用方法,包括如何接收Web请求并返回Web响应,以及如何处理GET请求和POST请求。同时还介绍了urls.py和views.py文件的配置方式。 ... [详细]
  • 在编写业务代码时,常常会遇到复杂的业务逻辑导致代码冗长混乱的情况。为了解决这个问题,可以利用中间件模式来简化代码逻辑。中间件模式可以帮助我们更好地设计架构和代码,提高代码质量。本文介绍了中间件模式的基本概念和用法。 ... [详细]
  • 导出功能protectedvoidbtnExport(objectsender,EventArgse){用来打开下载窗口stringfileName中 ... [详细]
author-avatar
译林hy_774
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有