qq.maps.visualization.Area 类
Area 是用于创建区域图的类,继承自 qq.map.Overlay。
构造函数
语法:new qq.maps.visualization.Area(options);
参数:options: { AreaOptions }(必填)区域图参数。其属性如下表
AreaOptions 说明:
名称 | 类型 | 说明 |
---|---|---|
map
|
Map
|
(必填)显示区域图的地图 |
stylePicker
|
Function
|
样式映射函数,参数为AreaData,要求返回值符合AreaStyle对象格式 |
onClick
|
Function
|
点击回调函数,参数为AreaEvent |
onMouseOver
|
Function
|
鼠标移入回调函数,参数为AreaEvent |
onMouseOut
|
Function
|
鼠标移出回调函数,参数为AreaEvent |
zIndex
|
Number
|
图层的层叠顺序,数字从小到大对应层叠顺序从下至上,默认为0 |
方法
方法名 | 返回值 | 说明 |
---|---|---|
show()
|
None
|
显示区域图 |
hide()
|
None
|
隐藏区域图 |
destroy()
|
None
|
删除区域图 |
setData(data: Array.< AreaData >)
|
None
|
设置区域图的数据(建议数据量不超过1万) |
setStylePicker(style: Function)
|
None
|
设置区域图的样式映射函数 |
setZIndex(zIndex: Number)
|
None
|
设置图层的层叠顺序 |
getZIndex()
|
Number
|
获取图层的层叠顺序 |
rerender()
|
None
|
更新显示图形 |
AreaData 说明:
名称 | 类型 | 说明 |
---|---|---|
coords
|
Array.< Number >
|
区域边界坐标数组,按照[lat0, lng0, lat1, lng1, …]的格式 |
attributes
|
*
|
区域附加属性,会加入到AreaPolygon |
AreaStyle 说明:
名称 | 类型 | 说明 |
---|---|---|
fillColor
|
Color
|
填充颜色 |
strokeColor
|
Color
|
边线颜色 |
strokeWidth
|
Number
|
边线宽度 |
AreaEvent 说明:
名称 | 类型 | 说明 |
---|---|---|
target
|
AreaPolygon
|
事件发生时鼠标所在区域,若不属于任何区域,则返回null |
latLng
|
LatLng
|
事件发生时鼠标所在位置经纬度 |
pixel
|
Point
|
事件发生时鼠标所在位置像素坐标 |
AreaPolygon 说明:
名称 | 类型 | 说明 |
---|---|---|
coords
|
Array.< Number >
|
区域边界坐标数组 |
attributes
|
*
|
区域的附加属性 |
style
|
AreaStyle
|
区域的样式 |
setStyle(style: AreaStyle)
|
Function
|
设置区域样式 |
实例
本示例中,介绍如何创建区域图,并进行数据及参数的设置和修改。
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no" /> <title>区域图示例</title> <style type="text/css"> html, body { position: relative; width: 100%; height: 100%; margin: 0; padding: 0; overflow: hidden; } #container { width: 100%; height: 90%; } button { width: 100px; border: 1px solid #555; } </style> <script charset="utf-8" src="https://map.qq.com/api/js?v=2.exp&libraries=visualization&key=OB4BZ-D4W3U-B7VVO-4PJWW-6TKDJ-WPB77"></script> <script charset="utf-8" src="https://3gimg.qq.com/lightmap/jsapi_testDemo/vplugin/data/areadata.js"></script> <script> window.onload = function() { var data = areadata; var map = new qq.maps.Map(document.getElementById("container"), { zoom: 4, center: new qq.maps.LatLng(36.212827, 108.559044) }); //hover时polygon的style var activedStyle = { lineWidth: 0.5, lineColor: 'rgba(255,255,255, .5)', fillColor: 'rgba(255, 255, 0, .8)' }; //设置当前hover的polygon的颜色 function setNew(polygon){ polygon._originalStyle = polygon.style; polygon.setStyle(activedStyle); } //还原上一个hover的polygon的颜色 function resetOld(polygon){ polygon.setStyle(polygon._originalStyle); delete polygon._originalStyle; } //创建可视化对象 var area = new qq.maps.visualization.Area({ map: map, stylePicker: function(shapeData){ return { strokeWidth: 1, strokeColor: 'rgba(0, 0, 0, .5)', fillColor: 'rgba(255, 0, 0, .6)', } }, onMouseOver: function(e){ if(e.target) { setNew(e.target); area.rerender(); } }, onMouseOut: function(e) { if(e.target) { resetOld(e.target); area.rerender(); } } }); //设置数据,更改数据时也用这个接口 area.setData(data); // 监听button事件,更改区域图配置参数 document.getElementById("setOptions").addEventListener("click", function(e) { var target = e.target; switch (target.id) { case "show": if (area.visible) { area.hide(); } else { area.show(); } break; case "data": area.setData(data.slice(0, 10)); break; case "stylePicker": area.setStylePicker(function(areaData) { var color = `rgba(255, ${Math.floor(100 * (1 - areaData.count / 70))}, 0, ${areaData.count / 70})`; return { fillColor: color }; }); break; case "destroy": area.destroy(); } }); } </script> </head> <body> <div id="container"></div> <div id="setOptions"> <button id="show">显示/隐藏</button> <button id="data">更新数据</button> <button id="stylePicker">改变样式</button> <button id="destroy">删除对象</button> </div> </body> </html>