【百度地图API】如何制作商圈地图?行政地图?

原文:【百度地图API】如何制作商圈地图?行政地图?

摘要:

  想要显示某一个区域,并且鼠标放上去,该区域就会变色。这时,你就需要巧用多边形覆盖物,和它的鼠标事件了!

  快来看看去哪儿网的实例吧:http://hotel.qunar.com/city/beijing_city/#fromDate=2011-07-13&from=qunarHotel&toDate=2011-07-16

 

 

---------------------------------------------------------------------------------------------

 

一、创建地图

这里我使用的是卫星图,并且添加了鱼骨控件。

var map = new BMap.Map("container",{mapType: BMAP_HYBRID_MAP});      //设置卫星图为底图map.centerAndZoom(new BMap.Point(116.404, 39.915),12);                     // 初始化地图,设置中心点坐标和地图级别。map.addControl(new BMap.NavigationControl());  //添加鱼骨控件map.addControl(new BMap.MapTypeControl());          //添加地图类型控件map.setCurrentCity("北京");          // 设置3D地图显示的城市 此项是必须设置的

 

 

二、创建多边形

多边形的各个点,是需要自己设定的。

我们可以使用坐标拾取工具来找点。http://dev.baidu.com/wiki/static/map/API/tool/getPoint/

比如,创建一个北京二环的多边形。

//创建经纬度数组var secRingCenter = new BMap.Point(116.400244,39.931757);var secRing = [new BMap.Point(116.362875,39.949459),new BMap.Point(116.378972,39.956539),new BMap.Point(116.438764,39.955654),new BMap.Point(116.440488,39.911836),new BMap.Point(116.365175,39.905637)];//创建多边形var secRingPolygon = new BMap.Polygon(secRing, {strokeColor:"blue", strokeWeight:5, strokeOpacity:0.5});//添加多边形到地图上map.addOverlay(secRingPolygon);

 

 

三、给多边形添加鼠标事件

1、mouseover

当鼠标放到多边形上时,多边形的边变成红色。

secRingPolygon.addEventListener("mouseover",function(){    secRingPolygon.setStrokeColor("red");});

 

2、mouseout

相应地,如果鼠标移出呢,红色就变回原来的蓝色。

secRingPolygon.addEventListener("mouseout",function(){    secRingPolygon.setStrokeColor("blue");});

 

3、click

如果点击多边形,地图就放大一级。并且设置一下地图的中心点。

secRingPolygon.addEventListener("click",function(){    map.zoomIn();    secRingPolygon.setStrokeColor("red");    map.setCenter(secRingCenter);});

四、创建标签

这里的标签有两个,一是小型的地标标签。

是对多边形的一个说明。

图示:

var secRingLabel2 = new BMap.Label("二环",{offset: new BMap.Size(10,-20), position: secRingCenter});secRingLabel2.setStyle({"padding": "2px"});map.addOverlay(secRingLabel2);

 

 

第二个就是鼠标放到多边形上,显示的商圈说明标签。

图示:

var secRingLabel = new BMap.Label("北京市二环,包括了东城区</br>和西城区。著名旅游景点有</br>天安门、故宫、后海、北海</br>公园、景山、南锣鼓巷等。",{offset: new BMap.Size(-150,0), position: secRingCenter});secRingLabel.setStyle({"padding": "10px","width": "140px","border": "1px solid #ccff00"});

 

五、图示

那么,按照这个方法,大家可以添加许多个商圈。

同样的,行政区域地图也可以用这个方法来制作。

本例成品图:

 

六、全部源代码

<!DOCTYPE html><html><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312" /><title>商圈</title><script type="text/javascript" src="http://api.map.baidu.com/api?v=1.2"></script></head><body><div style="z-index:9;width:520px;height:340px;border:1px solid gray" id="container"></div></body></html><script type="text/javascript">var map = new BMap.Map("container",{mapType: BMAP_HYBRID_MAP});      //设置卫星图为底图map.centerAndZoom(new BMap.Point(116.325218,39.977441),12);                     // 初始化地图,设置中心点坐标和地图级别。map.addControl(new BMap.NavigationControl());  //添加鱼骨控件map.addControl(new BMap.MapTypeControl());          //添加地图类型控件map.setCurrentCity("北京");          // 设置3D地图显示的城市 此项是必须设置的

//创建二环//创建经纬度数组var secRingCenter = new BMap.Point(116.400244,39.931757);var secRing = [new BMap.Point(116.362875,39.949459),new BMap.Point(116.378972,39.956539),new BMap.Point(116.438764,39.955654),new BMap.Point(116.440488,39.911836),new BMap.Point(116.365175,39.905637)];//创建多边形var secRingPolygon = new BMap.Polygon(secRing, {strokeColor:"blue", strokeWeight:5, strokeOpacity:0.5});//添加多边形到地图上map.addOverlay(secRingPolygon);//给多边形添加鼠标事件secRingPolygon.addEventListener("mouseover",function(){    secRingPolygon.setStrokeColor("red");    map.addOverlay(secRingLabel);    map.panTo(secRingCenter);});secRingPolygon.addEventListener("mouseout",function(){    secRingPolygon.setStrokeColor("blue");    map.removeOverlay(secRingLabel);});secRingPolygon.addEventListener("click",function(){    map.zoomIn();    secRingPolygon.setStrokeColor("red");    map.setCenter(secRingCenter);});//创建标签var secRingLabel = new BMap.Label("<b>北京市二环</b>,包括了东城区</br>和西城区。著名旅游景点有</br>天安门、故宫、后海、北海</br>公园、景山、南锣鼓巷等。",{offset: new BMap.Size(-150,0), position: secRingCenter});secRingLabel.setStyle({"z-index":"999999", "padding": "10px","width": "140px","border": "1px solid #ccff00"});

var secRingLabel2 = new BMap.Label("二  环",{offset: new BMap.Size(10,-30), position: secRingCenter});secRingLabel2.setStyle({"line-height": "20px", "text-align": "center", "width": "80px", "height": "29px", "border": "none", "padding": "2px","background": "url(http://jixingjx.com/mapapi/ac.gif) no-repeat",});map.addOverlay(secRingLabel2);

//创建海淀区//创建经纬度数组var haidianCenter = new BMap.Point(116.305958,39.969037);var haidian = [new BMap.Point(116.352526,39.915599),new BMap.Point(116.278362,39.916485),new BMap.Point(116.252491,39.943042),new BMap.Point(116.234669,39.994358),new BMap.Point(116.281812,40.037239),new BMap.Point(116.281812,40.037239),new BMap.Point(116.386446,39.98684),new BMap.Point(116.389896,39.968263),new BMap.Point(116.336429,39.960299)];//创建多边形var haidianPolygon = new BMap.Polygon(haidian, {strokeColor:"blue", strokeWeight:5, strokeOpacity:0.5});//添加多边形到地图上map.addOverlay(haidianPolygon);//给多边形添加鼠标事件haidianPolygon.addEventListener("mouseover",function(){    haidianPolygon.setStrokeColor("red");    map.addOverlay(haidianLabel);    map.panTo(haidianCenter);});haidianPolygon.addEventListener("mouseout",function(){    haidianPolygon.setStrokeColor("blue");    map.removeOverlay(haidianLabel);});haidianPolygon.addEventListener("click",function(){    map.zoomIn();    haidianPolygon.setStrokeColor("red");    map.setCenter(haidianCenter);});//创建标签var haidianLabel = new BMap.Label("<b>北京市海淀区</b>,是北京市</br>高等学府的聚集地。这里涵</br>括了北京市80%的重点大学</br>。其中清华、北大都是大家</br>耳熟能详的求学地。",{offset: new BMap.Size(-150,0), position: haidianCenter});haidianLabel.setStyle({"z-index":"999999", "padding": "10px","width": "140px","border": "1px solid #ccff00"});

var haidianLabel2 = new BMap.Label("海淀区",{offset: new BMap.Size(10,-30), position: haidianCenter});haidianLabel2.setStyle({"line-height": "20px", "text-align": "center", "width": "80px", "height": "29px", "border": "none", "padding": "2px","background": "url(http://jixingjx.com/mapapi/ac.gif) no-repeat",});map.addOverlay(haidianLabel2);</script>
时间: 2024-09-13 13:15:39

【百度地图API】如何制作商圈地图?行政地图?的相关文章

如何利用【百度地图API】,制作房产酒店地图?(中)——使用右侧列表打开信息窗口

原文:如何利用[百度地图API],制作房产酒店地图?(中)--使用右侧列表打开信息窗口 摘要: 很多房产网.旅游酒店网上,都有一个列表,鼠标经过列表上的数据时,地图上就会打开相应的信息窗口. 如何实现这一功能呢? 快来学习吧. ----------------------------------------------------------------------------------------------- 一.制作列表 接着上一篇文章来讲,我们已经拥有了一张能显示自定义标注,和信息窗口

【百度地图API】如何制作孪生姐妹地图?

原文:[百度地图API]如何制作孪生姐妹地图? 任务描述: 我想要两张一模一样的地图!我想要双子地图!我想要孪生姐妹地图! 好好好,统统满足大家! 在这里我不需要使用百度地图API提供的地图缩略图控件,而是自己动手做一对双胞胎地图!   如何实现? 创建两张地图,map1和map2,他俩的中心点和地图级别(放大倍数)不同. 当鼠标移动map1的中心点时,map2的中心点会随着一起变化,最终和map1的中心点一致. 同理,可以实现用鼠标滚轮放大缩小地图.   操作试试: 移动左边的地图,右边的地图

【百度地图API】你看过房产地图吗?你知道房产标注是如何建立的吗?

原文:[百度地图API]你看过房产地图吗?你知道房产标注是如何建立的吗? 你是不是看过很多房产网站?例如安居客,新浪乐居. 你是不是也想做一个能写文字的标注? 你知道怎么去实现麼? 其实,上图这样的标注是一个"自定义覆盖物".你可以任意指定它的样式,文字,图片等等. 首先,我需要初始化地图: var mp = new BMap.Map("map_container");var point = new BMap.Point(116.3964,39.9093);mp.c

【百度地图API】如何利用PhoneGap制作地图APP

原文:[百度地图API]如何利用PhoneGap制作地图APP 摘要:百度地图API是一套由javascript编写的地图程序接口,按说它应该运行在浏览器上.现在,只要利用PhoneGap,我们就能开发出移动平台上能使用的APP了! --------------------------------------------- 一.安装平台 PhoneGap支持5种平台,IOS,安卓,黑莓,WebOS,塞班. 我们下面以IOS为例,开发一个定位的APP.   1.下载xCode 注意看清楚,狮子系统

【高德地图API】如何打造十月妈咪品牌地图?

原文:[高德地图API]如何打造十月妈咪品牌地图? 摘要:品牌地图除了地图,商铺标点外,还有微博关注,路线查询等功能. ----------------------------------------------------------------- 网站视图: ----------------------------------------------------------------- 一.首先获取店铺的信息 一般品牌点会提供地址,店铺名,电话,图片等信息. 这里,我们需要把地址转换成经纬

百度地图推出团购地图API 助力团购网站轻松导入地图服务

中介交易 SEO诊断 淘宝客 云主机 技术大厅 记者日前获悉,百度地图正式推出了团购地图API,作为一套生成团购网站地图展现的工具,团购地图插件包含了坐标点采集.团购页面地图展示等功能,这意味着今后万千团购网站将能轻松的导入地图服务,给广大网民带来更好的团购体验,增加团购网站的用户流量和黏性. 来自百度官方的说法是,百度团购地图API采用了iframe结构,使开发人员可以进行更简洁的代码管理,并及时更新团购地图功能;采用的JavaScript这一客户端脚本语言,有着更灵活的程序扩展性,同时带来更

在Android应用中使用百度地图api

本篇通过一个简单的示例一步步介绍如何在Android应用中使用百度地图api. 1)下载百度地图移动版 API(Android)开发包 要在Android应用中使用百度地图API,就需要在工程中引用百度地图API开发包,这个 开发包包含两个文件:baidumapapi.jar和libBMapApiEngine.so.下载地址: http://dev.baidu.com/wiki/static/imap/files/BaiduMapApi_Lib_Android_1.0.zip 2)申请API K

【百度地图API】——如何用label制作简易的房产标签

原文:[百度地图API]--如何用label制作简易的房产标签 摘要: 最近,API爱好者们纷纷说,自定义marker太复杂了!不仅定义复杂,连所有的dom事件都要自己重新定义.有没有快速简易创建房产标签的方法呢? 答案当然是有的啦~ 我们可以利用label嘛! ------------------------------------------------------------------------------- 一.创建地图 这是老生常谈的三句话,初始化地图的js. var map =

【百度地图API】建立全国银行位置查询系统(一)——如何创建地图

原文:[百度地图API]建立全国银行位置查询系统(一)--如何创建地图 <摘要>你将在第一章中学会以下知识: 如何创建一个网页文件 怎样利用百度地图API建立一张2D地图,以及3D地图 如何添加对地图进行鼠标和键盘操作的功能 ------------------------------------------------------------------------------------------------------------------- 一.创建网页文件 粘贴以下代码至记事本中

【地图API】为何您的坐标不准?如何纠偏?

原文:[地图API]为何您的坐标不准?如何纠偏? 摘要:各种坐标体系之间如何转换?到底有哪些坐标体系?什么是火星坐标?为什么我的坐标,在地图上显示会有偏移?本文详细解答以上问题.最后给出坐标拾取工具. --------------------------------------------------------------------------------------------------------------------------- 一.坐标体系 首先我们要明白,开发者能接触到哪些坐