`
cx1899
  • 浏览: 23089 次
社区版块
存档分类
最新评论

百度地图图标标注

阅读更多
标注概述

标注(Marker)是用来表示一个点位置的可见元素,每个标注自身都包含地理信息。比如你在西单商场位置添加了一个标注,不论地图移动、缩放,标注都会跟随一起移动,保证其始终指向正确的地理位置。



从上面的图可以看出,不论地图如何变化标注始终指向“西单商场”的位置。

如何知道某个点的坐标?

上例中我们在西单商场位置添加了一个标注,那么我是如何知道它的坐标点呢?可以通过API的事件机制来获取:

map.addEventListener('click', function(e){
    console.log(e.point);
});
我们在map对象上添加了一个click事件的监听函数,当点击地图上某个位置时,监听函数通过控制台把当前点击的位置输出出来(注意需要有控制台的支持,比如firebug,如果没有控制台则可使用alert把point的lng和lat属性输出出来)。此外,你也可以使用API提供的坐标拾取工具来完成(http://dev.baidu.com/wiki/static/map/API/tool/getPoint/),它支持检索并且点击地图上任意位置时会出现该位置的坐标。

标注元素组成

从DOM元素构成角度看,一个完整的标注是由以下几个部分组成的:

标注点击区域
标注图标
标注阴影
下面是示意图:



在地图API实现中,这三个DOM元素分别位于不同的容器中,这些容器可以通过map.getPanes()方法获得,其中markerMouseTarget就是标注点击区域所在容器、markerPane为标注图标所在容器,markerShadow为标注阴影所在图层。你可能会在自定义覆盖物时需要这些容器对象,这里只需要知道Marker的各个部分是如何放置的即可。

自定义标注图标

标注的图标是可以自定义的,通过Icon类可以自定义标注的图标,比如我希望使用下面这个图片作为标注图标:



已知这个图标大小为20x32。我们初始化地图,接着定义Icon,并赋给一个Marker实例:


var map = new BMap.Map('container');
map.centerAndZoom(new BMap.Point(116.380797, 39.918497), 18);

var icon = new BMap.Icon('pin.png', new BMap.Size(20, 32), {
    anchor: new BMap.Size(10, 30)
});

var mkr = new BMap.Marker(new BMap.Point(116.38075,39.918986), {
    icon: icon
});

map.addOverlay(mkr);

我们给定icon所需图片的url,接着是图片的尺寸,另外我们还增加了anchor属性,这个是干什么用的呢?在自定义标注图标时有一点需要注意的就是标注的定位点(anchor),通俗的讲就是要指定图片的哪个位置是与标注真正的位置对应在一起。我们通过下面的图示来说明:



我们获取到地图上一个位置(上图中标注下端所在的黑色小方块),那么我也希望我标注中间下端指向这个位置,这个就需要通过anchor来调节。anchor的意义如下图所示:



即定位点距离图片左上角的偏移量。

如果不给anchor的话,API会自动获取图片中心点作为anchor位置:



我们看到标注图片中心的位置覆盖在那个小方块区域。

除了anchor之外,还有一个infoWindowAnchor属性,它是用来控制信息窗口开启的位置的(注意这里调用的是Marker的openInfoWindow方法,而不是Map的openInfoWindow方法),默认情况下它和icon的anchor是一个位置:



标注被InfoWindow的底角挡住了,通过infoWindowAnchor属性就可以改变开启位置:

var icon = new BMap.Icon('pin.png', new BMap.Size(20, 32), {
    anchor: new BMap.Size(10, 30),
    infoWindowAnchor: new BMap.Size(10, 0)
})
再看看效果:



尖角位置已经发生了改变。

标注拖拽

标注支持拖拽,并且可以配置是否有动画效果,我们修改创建标注的代码:

var mkr = new BMap.Marker(new BMap.Point(116.38075,39.918986), {
    icon: icon,
    enableDragging: true,
    raiseOnDrag: true
});
这里开启了拖拽功能以及响应的动画效果。如果此时拖拽地图你会得到如下效果:



通过监听标注的dragend事件,你可以知道拖拽结束后标注的地理位置:

mkr.addEventListener('dragend', function(e){
    alert(e.point.lng + ', ' + e.point.lat);
})
标注阴影

为了增加立体感,可以单独给标注添加阴影,当然你也可以把阴影直接画在icon所用的图片上,但是由于阴影和标注本身在一起,所以就不建议使用任何动画效果,否则会缺乏真实感。阴影可以通过MarkerOptions的shadow属性配置,类型也是一个Icon实例。具体使用方法和icon属性一样,这里就不赘述了。
原文地址:http://www.cnblogs.com/jz1108/archive/2011/09/15/2152122.html
分享到:
评论

相关推荐

    百度地图自定义标注

    首先,"百度地图自定义标注"指的是在百度地图上添加非默认的图标或者内容,以满足个性化需求。这通常涉及到对百度地图JavaScript API的运用,通过创建自定义覆盖物(Overlay)来替代默认的标记(Marker)。覆盖物...

    实现百度地图点击标注弹出窗口_地图定位.zip

    在本项目中,我们主要探讨如何在百度地图API中实现点击地图上的标注点后弹出信息窗口的功能。这个功能在很多应用中都很常见,比如地理信息系统、导航软件、位置服务等,它能帮助用户获取地图上特定位置的详细信息。...

    使用百度地图JavaScript API 画轨迹,给出自定义图标和标注

    在本文中,我们将深入探讨如何使用百度地图JavaScript API 来绘制轨迹,并添加自定义图标和标注。这是一项在Web开发中常用于地理位置展示和分析的重要技术。首先,我们需要理解百度地图API的基础概念及其核心功能。 ...

    基于VB的百度地图定位标注实例源码

    5. **自定义标注**: 实例允许用户自定义标注,这意味着程序提供了对标注外观和内容的定制功能,可能包括图标、文字等元素,这需要理解并利用百度地图API的标注服务进行实现。 【标签】"VB,百度地图"进一步强调了本...

    百度地图类库 标注管理器.zip

    "百度地图类库 - 标注管理器.zip" 是一个专为管理百度地图上的多个标注(Marker)而设计的工具,它旨在提高开发效率并优化标注的解析速度。 首先,我们来深入了解一下标注(Marker)在百度地图API中的角色。标注是...

    百度地图在范围内标注点

    4. **标注创建与管理**:一旦确定了要在地图上显示的点,就可以使用百度地图API创建标注对象,并设置其位置、图标、标题等属性。同时,我们还需要管理这些标注,例如添加事件监听器以响应用户的交互。 5. **性能...

    百度地图标注插件

    【百度地图标注插件】是一种基于地图服务的实用工具,主要功能是允许用户在百度地图上进行精确的标记和定位。这款插件适用于多种场景,包括但不限于地理信息标注、商业选址分析、路线规划等,通过坐标、地址、城市或...

    百度地图标注设置源码.7z

    在本项目中,“百度地图标注设置源码.7z”是一个使用C#编程语言编写的程序,用于在百度地图上根据本地TXT数据源进行位置标注。这个程序的主要功能包括读取TXT文件中的信息,然后在百度地图上显示相关的地理位置信息...

    Android应用源码之百度地图点击标注,弹出窗口

    在Android开发中,集成百度地图并实现点击标注后弹出窗口的功能是一项常见的需求。这个功能可以为用户提供更丰富的交互体验,比如展示详细信息或者执行特定操作。以下将详细讲解实现这一功能所需的知识点。 首先,...

    百度地图-标注聚合功能,地图标注图标聚合可选 地图版本3.0 类型webgl

    地图标注聚合可选。用于需要选取地图标注且可以聚合。js工具代码有做修改 (MarkerClusterer.js,...聚合图标上会显示聚合数量和已选数量, 已选标注会更改样式。 在html文件中设置好自己的百度ak 就能正常跑起来。

    地图多个标注点添加百度样式检索窗口

    本文将深入探讨如何在百度地图API上实现多个标注点的添加,并利用特定样式创建检索窗口,提升用户体验。首先,我们需要了解百度地图API的基础知识。 百度地图API是百度提供的一项服务,允许开发者在网页或应用程序...

    android 百度地图标注

    在Android平台上进行百度地图开发,实现地图上的标注功能是一项常见的需求。这通常涉及到将已知经纬度的位置在地图上以图标或者文字的形式显示出来,以便用户可以清晰地看到特定地点的信息。下面我们将深入探讨如何...

    jquery百度地图api标注联系地址名称电话代码

    本示例中的"jquery百度地图api标注联系地址名称电话代码"是将jQuery与百度地图API结合,用于在地图上显示特定联系人的地址、名称和电话信息。下面我们将详细探讨如何实现这一功能: 首先,你需要在网页中引入jQuery...

    不同颜色百度地图开发定位图标

    - 在百度地图API中,这些图标可以通过设置标注的图标属性(icon)来使用,将图标URL指向这些文件,从而实现不同颜色的图标显示。 3. **实现方法**: - **创建标注**:使用百度地图API的`BMap.Marker`类创建标注,...

    百度地图显示多个标注点

    在使用百度地图API时,有时候我们需要在地图上显示多个标注点来表示不同的地理位置信息,比如店铺分布、公交站点等。这篇博客"百度地图显示多个标注点"提供了关于如何实现这一功能的技术指南。以下是对该主题的详细...

    jQuery的百度地图自定义标注信息代码.zip

    而“jQuery的百度地图自定义标注信息代码”则结合了这两者的功能,提供了在百度地图上自定义标注点并实现交互效果的能力。下面将详细介绍这个压缩包中的知识点。 首先,我们要了解jQuery如何与百度地图API结合。...

    百度地图类库 添加标注工具.zip

    百度地图的添加标注工具类,对外开放。 允许用户在地图上点击后添加一个点标注,允许用户设定标注的图标样式。 主入口类是MarkerTool, 基于Baidu Map API 1.2。

    百度地图添加标注并每个标注对应不同信息源码带注释

    在Java编程环境中,使用百度地图API来添加标注并让每个标注对应不同的信息是一项常见的任务,特别是在开发地理位置相关的应用时。这个任务涉及到的地图API通常包括创建地图对象、设置地图样式、定位标注、设置标注...

    百度地图范围内标注

    "百度地图范围内标注"涉及到了在百度地图上定位、标记特定区域或者对象的技术。这个过程可以帮助用户清晰地看到地图上的特定地点、兴趣点或者一系列地理坐标,从而提供导航、规划路线或者数据分析等服务。下面将详细...

Global site tag (gtag.js) - Google Analytics