(以“{{jspopularGL-sidebar}} <div class="h1-title">GeoJSON图层</div><div id="update-time1">更新时间:2022年8月23日</div><div class="bluetitle"><div class="serve...”为内容创建页面) |
|||
| 第1行: | 第1行: | ||
{{jspopularGL-sidebar}} | {{jspopularGL-sidebar}} | ||
| − | <div class="h1-title">GeoJSON图层</div><div id="update-time1">更新时间:2022年8月23日</div><div class="bluetitle"><div class="serve-explain-text"><div class="service-page-anchor"><span>简介</span></div></div></div><div class="serve-explain-text">地理数据多使用GeoJSON形式存储表达,百度地图JS API GL提供两种不同的方式支持开发者加载自己的GeoJSON数据:<br/>1.提供GeoJSONParse类,满足用户将geojson数据解析为符合百度地图坐标的Overlay数据,用户可得到Overlay属性、坐标数据,进行覆盖物实例化或者其他处理。 | + | <div class="h1-title">GeoJSON图层</div><div id="update-time1">更新时间:2022年8月23日</div><div class="bluetitle"><div class="serve-explain-text"><div class="service-page-anchor"><span>简介</span></div></div></div><div class="serve-explain-text">地理数据多使用GeoJSON形式存储表达,百度地图JS API GL提供两种不同的方式支持开发者加载自己的GeoJSON数据:<br/>1.提供GeoJSONParse类,满足用户将geojson数据解析为符合百度地图坐标的Overlay数据,用户可得到Overlay属性、坐标数据,进行覆盖物实例化或者其他处理。<br/>2.提供GeoJSONLayer类,满足用户将geojson数据直接解析为覆盖物的图层,并进行交互操作。</div><!--jsapi单独demo-代码--><div class="jsapidemo_template"><div class="demo_area"><div dir="https://lbsyun.baidu.com/jsdemo/demo/webgl-layer-geojson.htm"></div></div><div class="demo_control"><div class="demo_btn" style="width:50%;">[https://lbsyun.baidu.com/jsdemo/demo/webgl-layer-geojson.htm GeoJSONLayer实现图层展示]</div><div class="demo_btn" style="width:485px;">[https://lbsyun.baidu.com/jsdemo/demo/webgl-layer-geojson-parse.htm GeoJSONParse立体效果]</div></div><div class="jsapi-demo-link">[https://lbsyun.baidu.com/jsdemo.htm#webgl-layer-geojson DEMO详情]</div></div><div class="bluetitle"><div class="serve-explain-text"><div class="service-page-anchor"><span>GeoJSONParse类参考</span></div></div></div><div class="serve-explain-text"> |
| − | <br/>2.提供GeoJSONLayer类,满足用户将geojson数据直接解析为覆盖物的图层,并进行交互操作。</div><!--jsapi单独demo-代码--><div class="jsapidemo_template"><div class="demo_area"><div dir="https://lbsyun.baidu.com/jsdemo/demo/webgl-layer-geojson.htm"></div></div><div class="demo_control"><div class="demo_btn" style="width:50%;">[https://lbsyun.baidu.com/jsdemo/demo/webgl-layer-geojson.htm GeoJSONLayer实现图层展示]</div><div class="demo_btn" style="width:485px;">[https://lbsyun.baidu.com/jsdemo/demo/webgl-layer-geojson-parse.htm GeoJSONParse立体效果]</div></div><div class="jsapi-demo-link">[https://lbsyun.baidu.com/jsdemo.htm#webgl-layer-geojson DEMO详情]</div></div><div class="bluetitle"><div class="serve-explain-text"><div class="service-page-anchor"><span>GeoJSONParse类参考</span></div></div></div><div class="serve-explain-text"> | + | |
<span style="font-size: 14px;">GeoJSONParse类定义如下:</span><br/>构造函数: | <span style="font-size: 14px;">GeoJSONParse类定义如下:</span><br/>构造函数: | ||
</div> | </div> | ||
| 第32行: | 第31行: | ||
|- | |- | ||
| readFeatureFromObject(geojson_feature,options) | | readFeatureFromObject(geojson_feature,options) | ||
| − | | 1.geojson_feature为GeoJSON{"type":"Feature"}数据 <br/>2.options: {<br/>reference:string,//同构造函数reference<br/>isPoints:boolean,//是否为点集合,默认为false<br/>markerStyle:Function(properties):MarkerOptions||MarkerOptions,//点类型数据样式<br/>polylineStyle:Function(properties):PolylineOptions || PolylineOptions,//线类型数据样式<br/>polygonStyle:Function(properties):PolygonOptions || PolygonOptions,//面类型数据样式<br/>样式1:Value,//覆盖物统一样式<br/>样式2:Value,//覆盖物统一样式<br/>......} | + | | 1.geojson_feature为GeoJSON{"type":"Feature"}数据<br/>2.options: {<br/>reference:string,//同构造函数reference<br/>isPoints:boolean,//是否为点集合,默认为false<br/>markerStyle:Function(properties):MarkerOptions||MarkerOptions,//点类型数据样式<br/>polylineStyle:Function(properties):PolylineOptions || PolylineOptions,//线类型数据样式<br/>polygonStyle:Function(properties):PolygonOptions || PolygonOptions,//面类型数据样式<br/>样式1:Value,//覆盖物统一样式<br/>样式2:Value,//覆盖物统一样式<br/>......} |
| 1,如果isPoints为false,返回实例化的覆盖物,如果是muti几何要素,会返回多个覆盖物Object,否则返回单个覆盖物Object。2,如果isPoints为true,返回Object的points为坐标序列点 3,属性存储在Object.properties中 | | 1,如果isPoints为false,返回实例化的覆盖物,如果是muti几何要素,会返回多个覆盖物Object,否则返回单个覆盖物Object。2,如果isPoints为true,返回Object的points为坐标序列点 3,属性存储在Object.properties中 | ||
| − | | 如果设置了options.reference,则优先使用方法的options.reference。<br/> 如果isPoints为false,且不设置样式,则使用覆盖物默认样式。<br/>如果设置了类型样式,则优先使用类型样式,无则使用统一样式。 | + | | 如果设置了options.reference,则优先使用方法的options.reference。<br/>如果isPoints为false,且不设置样式,则使用覆盖物默认样式。<br/>如果设置了类型样式,则优先使用类型样式,无则使用统一样式。 |
|- | |- | ||
| readFeaturesFromObject(geojson,options,callback) | | readFeaturesFromObject(geojson,options,callback) | ||
| − | | 1.geojson为GeoJSON{"type":"FeatureCollection"}数据<br/>1. options: {<br/>reference:string,// 同构造函数reference<br/>isPoints:boolean, // 是否为点集合,默认为false<br/>markerStyle: Function(properties):MarkerOptions||MarkerOptions, // 点类型数据样式<br/>polylineStyle:Function(properties):PolylineOptions||PolylineOptions, //线类型数据样式<br/>polygonStyle:Function(properties):PolygonOptions||PolygonOptions, // 面类型数据样式<br/>样式1:Value, | + | | 1.geojson为GeoJSON{"type":"FeatureCollection"}数据<br/>1. options: {<br/>reference:string,// 同构造函数reference<br/>isPoints:boolean, // 是否为点集合,默认为false<br/>markerStyle: Function(properties):MarkerOptions||MarkerOptions, // 点类型数据样式<br/>polylineStyle:Function(properties):PolylineOptions||PolylineOptions, //线类型数据样式<br/>polygonStyle:Function(properties):PolygonOptions||PolygonOptions, // 面类型数据样式<br/>样式1:Value, // 覆盖物统一样式<br/>样式2:Value, // 覆盖物统一样式<br/>......}<br/>3.callback:Function(Overlay or Object) |
| 如果isPoints为false,返回实例化的覆盖物Overlay集合。<br/>如果isPoints为true,返回Object的集合,Object.points为坐标序列点;Object.properties为属性。 | | 如果isPoints为false,返回实例化的覆盖物Overlay集合。<br/>如果isPoints为true,返回Object的集合,Object.points为坐标序列点;Object.properties为属性。 | ||
| 如果设置了options.reference,则优先使用方法的options.reference。<br/>如果isPoints为false,且不设置样式,则使用覆盖物默认样式。<br/>如果设置了类型样式,则优先使用类型样式,无则使用统一样式。 | | 如果设置了options.reference,则优先使用方法的options.reference。<br/>如果isPoints为false,且不设置样式,则使用覆盖物默认样式。<br/>如果设置了类型样式,则优先使用类型样式,无则使用统一样式。 | ||
|} | |} | ||
| − | <div class="bluetitle"><div class="serve-explain-text"><div class="service-page-anchor"><span>GeoJSONLayer类</span></div></div></div> | + | <div class="bluetitle"><div class="serve-explain-text"><div class="service-page-anchor"><span>GeoJSONLayer类</span></div></div></div><div style="font-size: 18px; font-weight: 500; margin-bottom: 10px;">BMapGL.Map添加以下方法:</div><div style="margin-bottom: 20px;">addGeoJSONLayer(layer:GeoJSONLayer)<br/>removeGeoJSONLayer(layer:GeoJSONLayer)</div><div>GeoJSONLayer类定义如下:<br/><br/>构造函数:</div> |
| − | <div style="font-size: 18px; font-weight: 500; margin-bottom: 10px;">BMapGL.Map添加以下方法:</div> | + | |
| − | <div style="margin-bottom: 20px;">addGeoJSONLayer(layer:GeoJSONLayer) <br/>removeGeoJSONLayer(layer:GeoJSONLayer)</div> | + | |
| − | <div>GeoJSONLayer类定义如下:<br/><br/>构造函数:</div> | + | |
{| width="519" border="1" | {| width="519" border="1" | ||
|- | |- | ||
| 第67行: | 第63行: | ||
| Object | | Object | ||
| 来源数据的坐标系,可选择:BD09LL|BD09MC|EPSG3857|GCJ02|WGS84,默认是:BD09LL | | 来源数据的坐标系,可选择:BD09LL|BD09MC|EPSG3857|GCJ02|WGS84,默认是:BD09LL | ||
| − | |- | + | |- |
| markerStyle | | markerStyle | ||
| Function(properties):MarkerOptions||MarkerOptions | | Function(properties):MarkerOptions||MarkerOptions | ||
| 点类型数据样式,配置项详见BMapGL.Marker的MarkerOptions配置内容 | | 点类型数据样式,配置项详见BMapGL.Marker的MarkerOptions配置内容 | ||
| − | |- | + | |- |
| polylineStyle | | polylineStyle | ||
| Function(properties):PolylineOptions||PolylineOptions | | Function(properties):PolylineOptions||PolylineOptions | ||
| 线类型数据样式,配置项详见BMapGL.Polyline的PolylineOptions配置内容 | | 线类型数据样式,配置项详见BMapGL.Polyline的PolylineOptions配置内容 | ||
| − | |- | + | |- |
| polygonStyle | | polygonStyle | ||
| Function(properties):PolygonOptions||PolygonOptions | | Function(properties):PolygonOptions||PolygonOptions | ||
| 面类型数据样式,配置项详见BMapGL.Polygon的PolygonOptions配置内容 | | 面类型数据样式,配置项详见BMapGL.Polygon的PolygonOptions配置内容 | ||
| − | |- | + | |- |
| minZoom | | minZoom | ||
| number | | number | ||
| 最小显示层级,默认3 | | 最小显示层级,默认3 | ||
| − | |- | + | |- |
| maxZoom | | maxZoom | ||
| number | | number | ||
| 最大显示层级,默认21 | | 最大显示层级,默认21 | ||
| − | |- | + | |- |
| level | | level | ||
| number | | number | ||
| 显示层级,由于系统内部问题,GeoJSONLayer图层等级使用负数表达,负数越大层级越高,默认-99 | | 显示层级,由于系统内部问题,GeoJSONLayer图层等级使用负数表达,负数越大层级越高,默认-99 | ||
| − | |- | + | |- |
| visible | | visible | ||
| boolean | | boolean | ||
| 第165行: | 第161行: | ||
|} | |} | ||
<div class="serve-explain-text"> | <div class="serve-explain-text"> | ||
| − | 事件<br/> | + | 事件<br/>通过addEventListener方法注册事件,通过removeEventListener移除事件。 |
| − | 通过addEventListener方法注册事件,通过removeEventListener移除事件。 | + | </div><div class="bluetitle"><div class="serve-explain-text"><div class="service-page-anchor"><span>使用示例</span></div></div></div><div class="devguide"><div class="leftborderbg" style="height:5000px;"></div><div class="devguideorder"></div><div class="devguidecenter">1.GeoJSONParse覆盖物模式<pre class="prettyprint codestyle" style="overflow-y: auto;"> var label = new BMapGL.Label(); |
| − | </div> | + | |
| − | <div class="bluetitle"><div class="serve-explain-text"><div class="service-page-anchor"><span>使用示例</span></div></div></div> | + | |
| − | <div class="devguide"><div class="leftborderbg" style="height:5000px;"></div><div class="devguideorder"></div><div class="devguidecenter">1.GeoJSONParse覆盖物模式<pre class="prettyprint codestyle" style="overflow-y: auto;"> var label = new BMapGL.Label(); | + | |
label.setStyle({ | label.setStyle({ | ||
color: 'blue', | color: 'blue', | ||
| 第242行: | 第235行: | ||
}); | }); | ||
</pre> | </pre> | ||
| − | </div></div><div class="devguide"><div class="leftborderbg" style="height:5000px;"></div><div class="devguideorder"></div><div class="devguidecenter">2.GeoJSONParse点序列模式<pre class="prettyprint codestyle" style="overflow-y: auto;"> | + | </div></div><div class="devguide"><div class="leftborderbg" style="height:5000px;"></div><div class="devguideorder"></div><div class="devguidecenter">2.GeoJSONParse点序列模式<pre class="prettyprint codestyle" style="overflow-y: auto;">var region = { |
| − | var region = { | + | |
"type": "FeatureCollection", "features": [{ | "type": "FeatureCollection", "features": [{ | ||
"type": "Feature", | "type": "Feature", | ||
| 第421行: | 第413行: | ||
bjRegionLayer && bjRegionLayer.resetStyle(); | bjRegionLayer && bjRegionLayer.resetStyle(); | ||
}</pre> | }</pre> | ||
| − | </div></div> | + | </div> |
| + | <div class="devguide"><div class="leftborderbg" style="height:5000px;"></div><div class="devguideorder"></div><div class="devguidecenter">4.添加addOverlay(Array<Overlay | GeoJSON> | Overlay | GeoJSON)、removeOverlay(Array<Overlay> | Overlay)方法<pre class="prettyprint codestyle" style="overflow-y: auto;"> | ||
| + | bjRegionLayer.addOverlay(marker1); | ||
| + | bjRegionLayer.addOverlay([polyline,polygon]); | ||
| + | |||
| + | bjRegionLayer.addOverlay(marker1.toGeoJSON()); | ||
| + | bjRegionLayer.addOverlay([polyline.toGeoJSON(),polygon.toGeoJSON()]); | ||
| + | |||
| + | bjRegionLayer.removeOverlay(marker1); | ||
| + | bjRegionLayer.removeOverlay([polyline,polygon]); | ||
| + | </pre> | ||
| + | </div> | ||
| + | </div> | ||
2022年11月2日 (三) 14:27的最后版本
GeoJSON图层
更新时间:2022年8月23日
简介
地理数据多使用GeoJSON形式存储表达,百度地图JS API GL提供两种不同的方式支持开发者加载自己的GeoJSON数据:
1.提供GeoJSONParse类,满足用户将geojson数据解析为符合百度地图坐标的Overlay数据,用户可得到Overlay属性、坐标数据,进行覆盖物实例化或者其他处理。
2.提供GeoJSONLayer类,满足用户将geojson数据直接解析为覆盖物的图层,并进行交互操作。
1.提供GeoJSONParse类,满足用户将geojson数据解析为符合百度地图坐标的Overlay数据,用户可得到Overlay属性、坐标数据,进行覆盖物实例化或者其他处理。
2.提供GeoJSONLayer类,满足用户将geojson数据直接解析为覆盖物的图层,并进行交互操作。
GeoJSONParse类参考
GeoJSONParse类定义如下:
构造函数:
| 构造函数 | 说明 |
| BMapGL.GeoJSONParse(options) | 构建GeoJSON解析类。输入坐标支持options的reference设置类型,输出统一为百度09经纬度。 |
options参数:
| 参数名称 | 类型 | 描述 |
| reference | object | 来源数据的坐标系,可选择:BD09LL|BD09MC|EPSG3857|GCJ02|WGS84,默认是:BD09LL |
方法:
| 方法名称 | 参数 | 返回值 | 说明 |
| readFeatureFromObject(geojson_feature,options) | 1.geojson_feature为GeoJSON{"type":"Feature"}数据 2.options: { reference:string,//同构造函数reference isPoints:boolean,//是否为点集合,默认为false markerStyle:Function(properties):MarkerOptions||MarkerOptions,//点类型数据样式 polylineStyle:Function(properties):PolylineOptions || PolylineOptions,//线类型数据样式 polygonStyle:Function(properties):PolygonOptions || PolygonOptions,//面类型数据样式 样式1:Value,//覆盖物统一样式 样式2:Value,//覆盖物统一样式 ......} |
1,如果isPoints为false,返回实例化的覆盖物,如果是muti几何要素,会返回多个覆盖物Object,否则返回单个覆盖物Object。2,如果isPoints为true,返回Object的points为坐标序列点 3,属性存储在Object.properties中 | 如果设置了options.reference,则优先使用方法的options.reference。 如果isPoints为false,且不设置样式,则使用覆盖物默认样式。 如果设置了类型样式,则优先使用类型样式,无则使用统一样式。 |
| readFeaturesFromObject(geojson,options,callback) | 1.geojson为GeoJSON{"type":"FeatureCollection"}数据 1. options: { reference:string,// 同构造函数reference isPoints:boolean, // 是否为点集合,默认为false markerStyle: Function(properties):MarkerOptions||MarkerOptions, // 点类型数据样式 polylineStyle:Function(properties):PolylineOptions||PolylineOptions, //线类型数据样式 polygonStyle:Function(properties):PolygonOptions||PolygonOptions, // 面类型数据样式 样式1:Value, // 覆盖物统一样式 样式2:Value, // 覆盖物统一样式 ......} 3.callback:Function(Overlay or Object) |
如果isPoints为false,返回实例化的覆盖物Overlay集合。 如果isPoints为true,返回Object的集合,Object.points为坐标序列点;Object.properties为属性。 |
如果设置了options.reference,则优先使用方法的options.reference。 如果isPoints为false,且不设置样式,则使用覆盖物默认样式。 如果设置了类型样式,则优先使用类型样式,无则使用统一样式。 |
GeoJSONLayer类
BMapGL.Map添加以下方法:
addGeoJSONLayer(layer:GeoJSONLayer)
removeGeoJSONLayer(layer:GeoJSONLayer)
removeGeoJSONLayer(layer:GeoJSONLayer)
GeoJSONLayer类定义如下:
构造函数:
构造函数:
| 构造函数 | 说明 |
| BMapGL.GeoJSONLayer(layerName:string,options:Object) | 构建GeoJSONLayer覆盖物组合图层类。layerName为图层名设置,每个覆盖物都将写入layerName属性;options详见下表。 |
options参数:
| 参数名称 | 类型 | 描述 |
| dataSource | Object | GeoJSON解构数据 |
| reference | Object | 来源数据的坐标系,可选择:BD09LL|BD09MC|EPSG3857|GCJ02|WGS84,默认是:BD09LL |
| markerStyle | Function(properties):MarkerOptions||MarkerOptions | 点类型数据样式,配置项详见BMapGL.Marker的MarkerOptions配置内容 |
| polylineStyle | Function(properties):PolylineOptions||PolylineOptions | 线类型数据样式,配置项详见BMapGL.Polyline的PolylineOptions配置内容 |
| polygonStyle | Function(properties):PolygonOptions||PolygonOptions | 面类型数据样式,配置项详见BMapGL.Polygon的PolygonOptions配置内容 |
| minZoom | number | 最小显示层级,默认3 |
| maxZoom | number | 最大显示层级,默认21 |
| level | number | 显示层级,由于系统内部问题,GeoJSONLayer图层等级使用负数表达,负数越大层级越高,默认-99 |
| visible | boolean | 图层数据是否显示,默认true |
方法:
| 方法名称 | 参数 | 返回值 | 说明 |
| setData(geojson:Object) | geojson 结构数据 | 无 | 设置图层显示的数据源 |
| getData() | 无 | 覆盖物对象集合 | 获取覆盖物对象集合 |
| clearData() | 无 | 无 | 清空地图上的覆盖物数据,以及覆盖物对象集合 |
| resetStyle() | 无 | 无 | 样式重置到图层初始化状态 |
| pickOverlays(e:Event) | e 地图事件对象 | 事件关联的覆盖物对象集合 | 通过事件获取当前包含当前点的覆盖物集合 |
| setLevel(z:number) | z 显示层级 | 无 | 设置显示层级 |
| getLevel() | 无 | number | 获取显示层级 |
| setVisible(v:boolean) | v 是否显示 | 无 | 设置是否显示 |
| getVisible() | 无 | boolean | 获取显示状态 |
| destroy() | 无 | 无 | 清空地图上的覆盖物数据,且清空覆盖物对象集合,以及关联的map对象。 |
| addEventListener(type:string,function:Function) | type 事件类型,支持'click','mousemove','mouseout' function(e:Event) 为触发事件后的回调函数 |
无 | 添加事件,回调函数function入参为Event对象,其中features属性为触发的要素实例集合,默认为null。 |
| removeEventListener(type:string,function:Function) | type 事件类型,支持'click','mousemove','mouseout' function 定义的回调函数 |
无 | 移除事件 |
事件
通过addEventListener方法注册事件,通过removeEventListener移除事件。
使用示例
1.GeoJSONParse覆盖物模式
var label = new BMapGL.Label();
label.setStyle({
color: 'blue',
borderRadius: '5px',
borderColor: '#ccc',
padding: '10px',
fontSize: '16px',
fontFamily: '微软雅黑',
transform: 'translateX(-50%) translateY(calc(-100% - 10px))'
});
function popup(e) {
if (e.target) {
label.setPosition(e.latLng);
label.setContent(`<h4 style='margin:0 0 5px 0;'>${e.target.properties.name}</h4>
<p style='margin:0;line-height:1.5;font-size:13px;text-indent:2em'>
adcode:${e.target.properties.adcode}
</p></div>`);
map.addOverlay(label);
}
}
var region = {
"type": "FeatureCollection", "features": [{
"type": "Feature",
"properties": {
"adcode": 110101,
"name": "东城区",
"join": 0,
"center": [116.418757, 39.917544],
"centroid": [116.416718, 39.912934],
"childrenNum": 0,
"level": "district",
"parent": {"adcode": 110000},
"subFeatureIndex": 0,
"acroutes": [100000, 110000]
},
"geometry": {
"type": "MultiPolygon",
"coordinates": [[[[116.44364, 39.87284], [116.445648, 39.879283], [116.444059, 39.890038], [116.450939, 39.890249], [116.450876, 39.894088], [116.447154, 39.894186], [116.446819, 39.900042], [116.448722, 39.903246], [116.436488, 39.902042], [116.434983, 39.913964], [116.434314, 39.92868], [116.443682, 39.928664], [116.443703, 39.936663], [116.446338, 39.946205], [116.440566, 39.945295], [116.442239, 39.9497], [116.435422, 39.952121], [116.436698, 39.949245], [116.429483, 39.950155], [116.429002, 39.957274], [116.424861, 39.962279], [116.414196, 39.962182], [116.411415, 39.964928], [116.411101, 39.97146], [116.407504, 39.973995], [116.40788, 39.962182], [116.389498, 39.96314], [116.387658, 39.96093], [116.38678, 39.957014], [116.393346, 39.957355], [116.394266, 39.940629], [116.396169, 39.94006], [116.396692, 39.928306], [116.399474, 39.923574], [116.392175, 39.92242], [116.392259, 39.907881], [116.395563, 39.907995], [116.396086, 39.89944], [116.397612, 39.898675], [116.399097, 39.872205], [116.38059, 39.871148], [116.380632, 39.866054], [116.387888, 39.867372], [116.394956, 39.862734], [116.3955, 39.858682], [116.406856, 39.859967], [116.41246, 39.858942], [116.41589, 39.863645], [116.413652, 39.871148], [116.423209, 39.872824], [116.442574, 39.87188], [116.44364, 39.87284]]]]
}
}, {
"type": "Feature",
"properties": {
"adcode": 110102,
"name": "西城区",
"join": 4,
"center": [116.366794, 39.915309],
"centroid": [116.36567, 39.912028],
"childrenNum": 0,
"level": "district",
"parent": {"adcode": 110000},
"subFeatureIndex": 1,
"acroutes": [100000, 110000]
},
"geometry": {
"type": "MultiPolygon",
"coordinates": [[[[116.325799, 39.896789], [116.32582, 39.891111], [116.320759, 39.881512], [116.321324, 39.875199], [116.326636, 39.876859], [116.335273, 39.875183], [116.341567, 39.876159], [116.344286, 39.873653], [116.349472, 39.873588], [116.35058, 39.86869], [116.38059, 39.871148], [116.399097, 39.872205], [116.397612, 39.898675], [116.396086, 39.89944], [116.395563, 39.907995], [116.392259, 39.907881], [116.392175, 39.92242], [116.399474, 39.923574], [116.396692, 39.928306], [116.396169, 39.94006], [116.394266, 39.940629], [116.393346, 39.957355], [116.38678, 39.957014], [116.387658, 39.96093], [116.390084, 39.968406], [116.394162, 39.969397], [116.394099, 39.972858], [116.380903, 39.972712], [116.380401, 39.968178], [116.370384, 39.967902], [116.371974, 39.948594], [116.356206, 39.944092], [116.352023, 39.950854], [116.352421, 39.943832], [116.341442, 39.941979], [116.332889, 39.944092], [116.327953, 39.942369], [116.333056, 39.938565], [116.334645, 39.922664], [116.335356, 39.898448], [116.337301, 39.89739], [116.325799, 39.896789]]]]
}
}]
}; // GeoJSON数据
var colorBand = ['darkolivegreen', 'cadetblue', 'orange', 'red', 'tan'];
var gParse = new BMapGL.GeoJSONParse({
reference: 'GCJ02'
});
var fs = gParse.readFeaturesFromObject(region, {
fillColor: 'red'
}, function (overlay) {
var index = overlay.properties.join || 0;
overlay.setFillColor(colorBand[index]);
overlay.setZIndex(-2);
overlay.addEventListener('onclick', popup);
map.addOverlay(overlay);
});
2.GeoJSONParse点序列模式
var region = {
"type": "FeatureCollection", "features": [{
"type": "Feature",
"properties": {
"adcode": 110101,
"name": "东城区",
"join": 0,
"center": [116.418757, 39.917544],
"centroid": [116.416718, 39.912934],
"childrenNum": 0,
"level": "district",
"parent": {"adcode": 110000},
"subFeatureIndex": 0,
"acroutes": [100000, 110000]
},
"geometry": {
"type": "MultiPolygon",
"coordinates": [[[[116.44364, 39.87284], [116.445648, 39.879283], [116.444059, 39.890038], [116.450939, 39.890249], [116.450876, 39.894088], [116.447154, 39.894186], [116.446819, 39.900042], [116.448722, 39.903246], [116.436488, 39.902042], [116.434983, 39.913964], [116.434314, 39.92868], [116.443682, 39.928664], [116.443703, 39.936663], [116.446338, 39.946205], [116.440566, 39.945295], [116.442239, 39.9497], [116.435422, 39.952121], [116.436698, 39.949245], [116.429483, 39.950155], [116.429002, 39.957274], [116.424861, 39.962279], [116.414196, 39.962182], [116.411415, 39.964928], [116.411101, 39.97146], [116.407504, 39.973995], [116.40788, 39.962182], [116.389498, 39.96314], [116.387658, 39.96093], [116.38678, 39.957014], [116.393346, 39.957355], [116.394266, 39.940629], [116.396169, 39.94006], [116.396692, 39.928306], [116.399474, 39.923574], [116.392175, 39.92242], [116.392259, 39.907881], [116.395563, 39.907995], [116.396086, 39.89944], [116.397612, 39.898675], [116.399097, 39.872205], [116.38059, 39.871148], [116.380632, 39.866054], [116.387888, 39.867372], [116.394956, 39.862734], [116.3955, 39.858682], [116.406856, 39.859967], [116.41246, 39.858942], [116.41589, 39.863645], [116.413652, 39.871148], [116.423209, 39.872824], [116.442574, 39.87188], [116.44364, 39.87284]]]]
}
}, {
"type": "Feature",
"properties": {
"adcode": 110102,
"name": "西城区",
"join": 4,
"center": [116.366794, 39.915309],
"centroid": [116.36567, 39.912028],
"childrenNum": 0,
"level": "district",
"parent": {"adcode": 110000},
"subFeatureIndex": 1,
"acroutes": [100000, 110000]
},
"geometry": {
"type": "MultiPolygon",
"coordinates": [[[[116.325799, 39.896789], [116.32582, 39.891111], [116.320759, 39.881512], [116.321324, 39.875199], [116.326636, 39.876859], [116.335273, 39.875183], [116.341567, 39.876159], [116.344286, 39.873653], [116.349472, 39.873588], [116.35058, 39.86869], [116.38059, 39.871148], [116.399097, 39.872205], [116.397612, 39.898675], [116.396086, 39.89944], [116.395563, 39.907995], [116.392259, 39.907881], [116.392175, 39.92242], [116.399474, 39.923574], [116.396692, 39.928306], [116.396169, 39.94006], [116.394266, 39.940629], [116.393346, 39.957355], [116.38678, 39.957014], [116.387658, 39.96093], [116.390084, 39.968406], [116.394162, 39.969397], [116.394099, 39.972858], [116.380903, 39.972712], [116.380401, 39.968178], [116.370384, 39.967902], [116.371974, 39.948594], [116.356206, 39.944092], [116.352023, 39.950854], [116.352421, 39.943832], [116.341442, 39.941979], [116.332889, 39.944092], [116.327953, 39.942369], [116.333056, 39.938565], [116.334645, 39.922664], [116.335356, 39.898448], [116.337301, 39.89739], [116.325799, 39.896789]]]]
}
}]
}; // GeoJSON数据
var colorBand = ['darkolivegreen', 'cadetblue', 'orange', 'red', 'tan'];
var gParse = new BMapGL.GeoJSONParse({
reference: 'GCJ02'
});
gParse.readFeaturesFromObject(region, {
isPoints: true
}, function (overlay) {
var index = overlay.properties.join || 0;
var prism = new BMapGL.Prism(overlay.points, 3000, {
topFillColor: colorBand[index],
topFillOpacity: 0.9,
sideFillColor: colorBand[index],
sideFillOpacity: 0.9
});
prism.properties = overlay.properties;
prism.setZIndex(-1)
prism.addEventListener('onclick', popup);
map.addOverlay(prism);
});
3.GeoJSONLayer示例
// 样例数据
var region = {
"type": "FeatureCollection", "features": [{
"type": "Feature",
"properties": {
"adcode": 110101,
"name": "东城区",
"join": 0,
"center": [116.418757, 39.917544],
"centroid": [116.416718, 39.912934],
"childrenNum": 0,
"level": "district",
"parent": {"adcode": 110000},
"subFeatureIndex": 0,
"acroutes": [100000, 110000]
},
"geometry": {
"type": "MultiPolygon",
"coordinates": [[[[116.44364, 39.87284], [116.445648, 39.879283], [116.444059, 39.890038], [116.450939, 39.890249], [116.450876, 39.894088], [116.447154, 39.894186], [116.446819, 39.900042], [116.448722, 39.903246], [116.436488, 39.902042], [116.434983, 39.913964], [116.434314, 39.92868], [116.443682, 39.928664], [116.443703, 39.936663], [116.446338, 39.946205], [116.440566, 39.945295], [116.442239, 39.9497], [116.435422, 39.952121], [116.436698, 39.949245], [116.429483, 39.950155], [116.429002, 39.957274], [116.424861, 39.962279], [116.414196, 39.962182], [116.411415, 39.964928], [116.411101, 39.97146], [116.407504, 39.973995], [116.40788, 39.962182], [116.389498, 39.96314], [116.387658, 39.96093], [116.38678, 39.957014], [116.393346, 39.957355], [116.394266, 39.940629], [116.396169, 39.94006], [116.396692, 39.928306], [116.399474, 39.923574], [116.392175, 39.92242], [116.392259, 39.907881], [116.395563, 39.907995], [116.396086, 39.89944], [116.397612, 39.898675], [116.399097, 39.872205], [116.38059, 39.871148], [116.380632, 39.866054], [116.387888, 39.867372], [116.394956, 39.862734], [116.3955, 39.858682], [116.406856, 39.859967], [116.41246, 39.858942], [116.41589, 39.863645], [116.413652, 39.871148], [116.423209, 39.872824], [116.442574, 39.87188], [116.44364, 39.87284]]]]
}
}, {
"type": "Feature",
"properties": {
"adcode": 110102,
"name": "西城区",
"join": 4,
"center": [116.366794, 39.915309],
"centroid": [116.36567, 39.912028],
"childrenNum": 0,
"level": "district",
"parent": {"adcode": 110000},
"subFeatureIndex": 1,
"acroutes": [100000, 110000]
},
"geometry": {
"type": "MultiPolygon",
"coordinates": [[[[116.325799, 39.896789], [116.32582, 39.891111], [116.320759, 39.881512], [116.321324, 39.875199], [116.326636, 39.876859], [116.335273, 39.875183], [116.341567, 39.876159], [116.344286, 39.873653], [116.349472, 39.873588], [116.35058, 39.86869], [116.38059, 39.871148], [116.399097, 39.872205], [116.397612, 39.898675], [116.396086, 39.89944], [116.395563, 39.907995], [116.392259, 39.907881], [116.392175, 39.92242], [116.399474, 39.923574], [116.396692, 39.928306], [116.396169, 39.94006], [116.394266, 39.940629], [116.393346, 39.957355], [116.38678, 39.957014], [116.387658, 39.96093], [116.390084, 39.968406], [116.394162, 39.969397], [116.394099, 39.972858], [116.380903, 39.972712], [116.380401, 39.968178], [116.370384, 39.967902], [116.371974, 39.948594], [116.356206, 39.944092], [116.352023, 39.950854], [116.352421, 39.943832], [116.341442, 39.941979], [116.332889, 39.944092], [116.327953, 39.942369], [116.333056, 39.938565], [116.334645, 39.922664], [116.335356, 39.898448], [116.337301, 39.89739], [116.325799, 39.896789]]]]
}
}]
}; // GeoJSON数据
// 颜色表
var colorBand = ['darkolivegreen', 'cadetblue', 'orange', 'red', 'tan'];
var label = new BMapGL.Label();
label.setStyle({
color: 'blue',
borderRadius: '5px',
borderColor: '#ccc',
padding: '10px',
fontSize: '16px',
fontFamily: '微软雅黑',
transform: 'translateX(-50%) translateY(calc(-100% - 10px))'
});
function popup(e) {
if (e.features && e.features.length>0) {
var overlay = e.features[0];
if (overlay.layerName === 'bj-child') {
// 重置数据的样式
resetGeoLayer();
if(overlay.toString() === 'Polygon') {
overlay.setFillColor('yellow');
}
if(overlay.toString() === 'Polyline') {
overlay.setStrokeColor('yellow');
}
label.setPosition(e.latLng);
label.setContent(`<h4 style='margin:0 0 5px 0;'>${overlay.properties.name}</h4>
<p style='margin:0;line-height:1.5;font-size:13px;text-indent:2em'>
adcode:${overlay.properties.adcode}
</p></div>`);
map.addOverlay(label);
}
}
}
var bjRegionLayer = new BMapGL.GeoJSONLayer('bj-child',{
reference: 'GCJ02',
dataSource: region,
level: -10,
polygonStyle: function(properties){
var index = properties.join || 0;
return {
fillColor: colorBand[index]
}
},
polylineStyle: function(properties){
return {
strokeColor: 'blue'
}
},
markerStyle: function(properties){
return {
}
}
});
bjRegionLayer.addEventListener('click',function(e){
if(e.features){
popup(e);
}else{
resetGeoLayer();
map.removeOverlay(label);
}
});
map.addGeoJSONLayer(bjRegionLayer);
function resetGeoLayer(){
bjRegionLayer && bjRegionLayer.resetStyle();
}
4.添加addOverlay(Array<Overlay | GeoJSON> | Overlay | GeoJSON)、removeOverlay(Array<Overlay> | Overlay)方法
bjRegionLayer.addOverlay(marker1);
bjRegionLayer.addOverlay([polyline,polygon]);
bjRegionLayer.addOverlay(marker1.toGeoJSON());
bjRegionLayer.addOverlay([polyline.toGeoJSON(),polygon.toGeoJSON()]);
bjRegionLayer.removeOverlay(marker1);
bjRegionLayer.removeOverlay([polyline,polygon]);
没有match的答案?试试对话大模型




