高德地图 JS API的覆盖物—信息窗体和右键菜单

高德地图 JS API的覆盖物—信息窗体和右键菜单

本章介绍信息窗体,高级信息窗体和右键菜单。

  1. 信息窗体 InfoWindow
  2. 高级信息窗体 AdvancedInfoWindow 
  3. 右键菜单 ContextMenu 

信息窗体 InfoWindow

本小节介绍在地图图面添加一个信息窗体的方式。同一个地图实例每次只能打开一个信息窗体。

一. 默认信息窗体

 1. 默认信息窗体的创建

默认信息窗体封装了关闭按钮,使用 API 默认的信息窗体样式,这个时候只需要对 InfoWindow 设定 content 属性即可,content 可以是 dom 对象,也可以是 html 识别的字符串:

JavaScript
// 信息窗体的内容
var content = [
    "<div><img src="\"" http:="" webapi.amap.com="" images="" autonavi.png="" \"=""> ",
    "<div style="\"padding:0px" 0px="" 4px;\"=""><b>高德软件有限公司</b>",
    "电话 : 010-84107000   邮编 : 100102",
    "地址 : 北京市望京阜通东大街方恒国际中心A座16层</div></div>"
];

// 创建 infoWindow 实例	
var infoWindow = new AMap.InfoWindow({
   content: content.join("<br>")  //传入 dom 对象,或者 html 字符串
});
  
// 打开信息窗体
infoWindow.open(map);

2.信息窗体锚点的设置(anchor)(自 v1.4.13 新增属性)

通过 anchor 可以方便的设置锚点方位。anchor 可选值有  ‘top-left’、’top-center’、’top-right’、’middle-left’、’center’、’middle-right’、’bottom-left’、’bottom-center’、’bottom-right’ , 分别代表了信息窗体锚点的不同方位。

JavaScript
var infoWindow = new AMap.InfoWindow({
        anchor: 'top-left',
        content: '这是信息窗体!这是信息窗体!',
});

infoWindow.open(map,[116.401337,39.907886])

二. 自定义信息窗体

如果要自定义信息窗体内容,只需把 InfoWindow 的 isCustom 属性设置为 true ,信息窗体就会变成自定义信息窗体。与默认信息窗体的不同在于,自定义信息窗体需要自己通过 content 来实现关闭按钮以及全部外观样式,同时需要通过 offset 指定锚点位置,offset 为相对于 content 下边缘中间点的位移:

  1.  自定义窗体的创建
JavaScript
// 折线的节点坐标数组,每个元素为 AMap.LngLat 对象
var content = [
    "<div><img src="\"" http:="" webapi.amap.com="" images="" autonavi.png="" \"=""> ",
    "<div style="\"padding:0px" 0px="" 4px;\"=""><b>高德软件有限公司</b>",
    "电话 : 010-84107000   邮编 : 100102",
    "地址 : 北京市望京阜通东大街方恒国际中心A座16层</div></div>"
];

// 实现自定义窗体内容,返回拼接后的字符串
function createInfoWindow (title, content){
    // 内容拼接 ...
    return content;
}

// 创建 infoWindow 实例 
var infoWindow = new AMap.InfoWindow({
   isCustom: true,  //使用自定义窗体
   content: createInfoWindow(title,content.join("<br>")),  //传入 dom 对象,或者 html 字符串
   offset: new AMap.Pixel(16, -50)
});

2. 自定义信息窗体的偏移量(offset) 

如果用户自定义信息窗体内容,可以为定义的内容添加偏移量(offset)。当偏移量为 (0, 0) 时,自定义内容默认以底部中部为基准点(若设置了 anchor,基准点位置则为 anchor 设置的位置)与经纬度坐标对齐;设置 offset 为其他值则对齐位置相应改变。具体偏移规则如下:

三. 信息窗体的打开与关闭

JavaScript
// 在指定位置打开已创建的信息窗体
var position = new AMap.LngLat(116.39, 39.9);
infoWindow.open(map, position);

// 关闭信息窗体
infoWindow.close();

四. 信息窗体的事件

信息窗体有支持多种事件,包括:change 事件(属性发生变化时触发)、open 事件(信息窗体打开之后触发事件)、close 事件(信息窗体关闭之后触发事件)。信息窗体事件的绑定和移除,参见「地图和覆盖物事件」。

信息窗体更多属性和方法

类名说明是否插件
AMap.InfoWindow             信息窗体
AMap.AdvancedInfoWindow高级信息窗体,在普通信息窗体的基础上,整合了POI搜索和多种路径规划的功能

InfoWindow 类

用于在地图上弹出一个详细信息展示窗体,地图上只允许同时展示1个信息窗体

构造函数说明
AMap.InfoWindow(opt:InforWindowOptions)构造详细信息展示窗体。
InfoWindowOptions类型说明
isCustomBoolean是否自定义窗体。设为true时,信息窗体外框及内容完全按照content所设的值添加(默认为false,即在系统默认的信息窗体外框中显示content内容)
autoMoveBoolean是否自动调整窗体到视野内(当信息窗体超出视野范围时,通过该属性设置是否自动平移地图,使信息窗体完全显示)
closeWhenClickMapBoolean控制是否在鼠标点击地图后关闭信息窗体,默认false,鼠标点击地图后不关闭信息窗体
contentString/HTMLElement显示内容,可以是HTML要素字符串或者HTMLElement对象,自定义窗体示例
sizeSize信息窗体尺寸(isCustom为true时,该属性无效)
anchorString信息窗体锚点。
默认值:’bottom-center’
可选值:’top-left’|’top-center’|’top-right’|’middle-left’|’center’|’middle-right’|’bottom-left’|’bottom-center’|’bottom-right’                                                                                          (自v1.4.13 新增)
offsetPixel信息窗体显示位置偏移量。默认基准点为信息窗体的底部中心(若设置了anchor,则以anchor值为基准点)。
positionLngLat信息窗体显示基点位置(自v1.2 新增)
showShadowBooleanBoolean 控制是否显示信息窗体阴影,取值false时不显示窗体阴影,取值true时显示窗体阴影默认值:false
retainWhenCloseBoolean信息窗体关闭时,是否将其Dom元素从页面中移除,默认为false
方法返回值说明
open(map:Map,pos:AMap.LngLat)
在地图的指定位置打开信息窗体
close( )
关闭信息窗体
getIsOpen( )Boolean获取信息窗体是否打开
setContent(content:String|htmlDOM)
设置信息窗体内容,可通过该函数动态更新信息窗体中的信息
getContent( )String获取信息窗体内容 ,结果以字符串方式返回
setPosition(lnglat:LngLat)
设置信息窗体显示基点位置
getPosition( )LngLat获取信息窗体显示基点位置
getAnchor( )String获取信息窗体锚点                                                                                   (自v1.4.13 新增)
setAnchor( )
设置信息窗体锚点可选值:’top-left’|’top-center’|’top-right’|’middle-left’|’center’|’middle-right’|’bottom-left’|’bottom-center’|’bottom-right’                                                                    (自v1.4.13 新增)
setSize(size:Size)
设置信息窗体大小(isCustom为false时有效)
getSize( )Size获取信息窗体大小
事件参数说明
change
属性发生变化时
open
信息窗体打开之后触发事件
close
信息窗体关闭之后触发事件

AMap.AdvancedInfoWindow 插件

用于在地图上弹出一个详细信息展示窗体

相关示例

构造函数说明
AMap.AdvancedInfoWindow(opt:AdvancedInforWindowOptions)构造详细信息展示窗体。
AdvancedInfoWindowOptions类型说明
autoMoveBoolean是否自动调整窗体到视野内(当信息窗体超出视野范围时,通过该属性设置是否自动平移地图,使信息窗体完全显示)
closeWhenClickMapBoolean控制是否在鼠标点击地图后关闭信息窗体,默认false,鼠标点击地图后不关闭信息窗体
contentString/HTMLElement显示内容,可以是HTML要素字符串或者HTMLElement对象
anchorString信息窗体锚点。  默认值:’bottom-center’ 可选值:’top-left’|’top-center’|’top-right’|’middle-left’|’center’|’middle-right’|’bottom-left’|’bottom-center’|’bottom-right’                                                                                         (自v1.4.13 新增)
offsetPixel信息窗体显示位置偏移量。默认基准点为信息窗体的底部中心(若设置了anchor,则以anchor值为基准点)。
positionLngLat信息窗体显示基点位置(自v1.2 新增)         
panelString|HTMLElement结果列表的HTML容器id或容器元素,提供此参数后,结果列表将在此容器中进行展示。可选值
searchRadiusNumber设定周边搜索的半径,默认值:5000,单位:米
placeSearchBoolean是否支持显示周边搜索,默认是true
drivingBoolean是否支持驾车路径规划,默认是true
walkingBoolean是否支持步行路径规划,默认是true
transitBoolean是否支持公交路径规划,默认是true
asOriginBoolean是否支持作为路径规划的起点,默认是true
asDestinationBoolean是否支持作为路径规划的终点,默认是true
方法返回值说明
open(map:Map,pos:AMap.LngLat)
在地图的指定位置打开信息窗体
close( )
关闭信息窗体
getIsOpen( )Boolean获取信息窗体是否打开
setContent(content:String|htmlDOM)
设置信息窗体内容,可通过该函数动态更新信息窗体中的信息
getContent( )String获取信息窗体内容 ,结果以字符串方式返回
setPosition(lnglat:LngLat)
设置信息窗体显示基点位置
getPosition( )LngLat获取信息窗体显示基点位置
getAnchor( )String获取信息窗体锚点                                                                                   (自v1.4.13 新增)
setAnchor( )
设置信息窗体锚点可选值:’top-left’|’top-center’|’top-right’|’middle-left’|’center’|’middle-right’|’bottom-left’|’bottom-center’|’bottom-right’                                                                    (自v1.4.13 新增)
clear( )
清除高级信息窗体在地图上绘制的路线规划或者搜索的结果
事件参数说明
change
属性发生变化时
open
信息窗体打开之后触发事件
close
信息窗体关闭之后触发事件
completeSearchResult当查询成功时触发此事件
errorErrorStatus当查询失败时触发此事件

SearchResult 对象

属性类型说明
infoString成功状态说明
typeplacesearch|driving|walking|transit查询成功后,返回查询类型
dataSearchResult|DrivingResult|WalkingResult|TranferResult查询成功后,根据查询类型返回对应的查询结果

高级信息窗体 AdvancedInfoWindow 

高级信息窗体封装了「输入提示、POI周边搜索、驾车路线规划、公交路线规划和步行路线规划」功能,这些封装的功能可以通过设定相关参数来决定是否展示和使用。使用高级信息窗体可以节省大量的开发工作,如果设置了 panel 属性,路线规划和 poi 搜索的结果可以显示在 panel 指定的 div 中:

JavaScript
var content = [
    '<div class="infowindow-content">',
    '<div class="amap-info-header">方恒国际中心</div>',
    '<div class="amap-info-body">阜通东大街6号</div></div>'
];

// 引入高级信息窗体组件
map.plugin('AMap.AdvancedInfoWindow', function () {
    // 创建 infoWindow 实例 
    // todo: 解释重要参数示意
    var advancedInfoWindow = new AMap.AdvancedInfoWindow({
        panel: 'panel',
        placeSearch: true,
        asOrigin: true,
        asDestination: true,
        content: content
    });
        
    // 打开信息窗体
    advancedInfoWindow.open(map);
});

AMap.AdvancedInfoWindow 插件

用于在地图上弹出一个详细信息展示窗体

相关示例

构造函数说明
AMap.AdvancedInfoWindow(opt:AdvancedInforWindowOptions)构造详细信息展示窗体。
AdvancedInfoWindowOptions类型说明
autoMoveBoolean是否自动调整窗体到视野内(当信息窗体超出视野范围时,通过该属性设置是否自动平移地图,使信息窗体完全显示)
closeWhenClickMapBoolean控制是否在鼠标点击地图后关闭信息窗体,默认false,鼠标点击地图后不关闭信息窗体
contentString/HTMLElement显示内容,可以是HTML要素字符串或者HTMLElement对象
anchorString信息窗体锚点。  默认值:’bottom-center’ 可选值:’top-left’|’top-center’|’top-right’|’middle-left’|’center’|’middle-right’|’bottom-left’|’bottom-center’|’bottom-right’                                                                                         (自v1.4.13 新增)
offsetPixel信息窗体显示位置偏移量。默认基准点为信息窗体的底部中心(若设置了anchor,则以anchor值为基准点)。
positionLngLat信息窗体显示基点位置(自v1.2 新增)         
panelString|HTMLElement结果列表的HTML容器id或容器元素,提供此参数后,结果列表将在此容器中进行展示。可选值
searchRadiusNumber设定周边搜索的半径,默认值:5000,单位:米
placeSearchBoolean是否支持显示周边搜索,默认是true
drivingBoolean是否支持驾车路径规划,默认是true
walkingBoolean是否支持步行路径规划,默认是true
transitBoolean是否支持公交路径规划,默认是true
asOriginBoolean是否支持作为路径规划的起点,默认是true
asDestinationBoolean是否支持作为路径规划的终点,默认是true
方法返回值说明
open(map:Map,pos:AMap.LngLat)
在地图的指定位置打开信息窗体
close( )
关闭信息窗体
getIsOpen( )Boolean获取信息窗体是否打开
setContent(content:String|htmlDOM)
设置信息窗体内容,可通过该函数动态更新信息窗体中的信息
getContent( )String获取信息窗体内容 ,结果以字符串方式返回
setPosition(lnglat:LngLat)
设置信息窗体显示基点位置
getPosition( )LngLat获取信息窗体显示基点位置
getAnchor( )String获取信息窗体锚点                                                                                   (自v1.4.13 新增)
setAnchor( )
设置信息窗体锚点可选值:’top-left’|’top-center’|’top-right’|’middle-left’|’center’|’middle-right’|’bottom-left’|’bottom-center’|’bottom-right’                                                                    (自v1.4.13 新增)
clear( )
清除高级信息窗体在地图上绘制的路线规划或者搜索的结果
事件参数说明
change
属性发生变化时
open
信息窗体打开之后触发事件
close
信息窗体关闭之后触发事件
completeSearchResult当查询成功时触发此事件
errorErrorStatus当查询失败时触发此事件

SearchResult 对象

属性类型说明
infoString成功状态说明
typeplacesearch|driving|walking|transit查询成功后,返回查询类型
dataSearchResult|DrivingResult|WalkingResult|TranferResult查询成功后,根据查询类型返回对应的查询结果

右键菜单 ContextMenu 

地图图面一种特殊的信息窗体,即右键菜单。AMap.ContextMenu 类提供图面添加右键菜单的方式。具体使用方式如下:

JavaScript
// 菜单内容
var content = [
    '<div class="context-menu-content">',
        '<ul class='context_menu'>',
            '<li onclick='menu.zoomMenu(0)'>缩小</li>',
            '<li class='split_line' onclick='menu.zoomMenu(1)'>放大</li>',
            '</ul>'
    '</div>'
];

var contextMenu = new AMap.ContextMenu({
    isCustom: true, 
    content: content.join('')
});

map.on('rightclick', function(e) {
    contextMenu.open(map, e.lnglat);
});

ContextMenu类

地图右键菜单

构造函数说明
AMap.ContextMenu(opt:ContextMenuOptions)构造一个右键菜单对象
ContextMenuOptions类型说明
positionLngLat右键菜单显示的位置(自v1.2 废弃)
contentString/HTMLELement右键菜单内容(针对自定义菜单时,添加菜单内容及功能。可以是HTML要素字符串或者HTML DOM对象。)
widthNumber右键菜单宽度(自v1.2 废弃)
方法返回值说明
addItem(text:String,fn:Function,num:Number)右键菜单中添加菜单项。参数text:菜单显示内容;fn:该菜单下需进行的操作;num:当前菜单项在右键菜单中的排序位置,以0开始
removeItem(text:String,fn:Function)删除一个菜单项
open(map:Map,position:LngLat)在地图的指定位置打开右键菜单。
close( )关闭右键菜单
事件参数说明
open{type, target}右键菜单打开事件
close{type, target}右键菜单关闭事件
0 0 投票数
文章评分
订阅评论
提醒
0 评论
最旧
最新 最多投票
内联反馈
查看所有评论
0
希望看到您的想法,请您发表评论x