主要构成
主要模块有地图YY. Map, 瓦片图层YY. TileLayer, 矢量图层YY. VectorLayer, 覆盖物YY. Overlay;
Map
- 在 GIS 系统中 Map 对象为最为重要和核心的对象,
js
var map = new YY.Map("map", {
centerCross: true,
bearing: -90,
center: [120.34, 31.309622415877158],
// pitch:40,
// overviewControl:true,
zoom: 6,
// minZoom:4
});
TileLayer
TileLayer 涉及到坐标系和空间投影信息,影响着整个系统的数据,目前常用的坐标投影有
- EPSG:3857(84 墨卡托投影)
- EPSG:4326(84 经纬度投影) , EPSG:4490(中国 2000),两者误差民用方面几乎可以忽略不计, 故把他们看成一个
- BD09(百度) ❌
针对以上常见的坐标投影我们都做了很好的支持
js
//快速获取 高德地图 EPSG:3857
var amapTileLayer = YY.LayerLookup.lookup("amap");
map.addBaseLayer(amapTileLayer);
//快速获取天地图 EPSG:4490
var tdtTileLayer1 = YY.LayerLookup.lookup("tdt", {
style: "image",
});
map.addBaseLayer(tdtTileLayer1);
//快速获取百度地图 BD09
// var baiduTileLayer1 = YY.LayerLookup.lookup("baidu", {
// style: "image",
// });
// map.addBaseLayer(baiduTileLayer1);
警告
当我们做项目中,涉及的 GIS 数据是哪个坐标投影这个非常重要的,不可乱用, mapplat 平台里我们主要使用高德(火星)和天地图(CGCS2000)坐标系统, 百度太过特立独行所以没有去集成, 谷歌因为政策原因也没有去集成
常见底图 | 坐标系 | 投影 | 我们是否会花大力气去支持 | 适用场景 |
---|---|---|---|---|
高德 | 火星 | 墨卡托 | ✔️ | 外网项目 |
腾讯 | 火星 | 墨卡托 | ✔️ | 外网项目 |
天地图 | 2000 | 墨卡托/经纬度 | ✔️ | 外网/内网项目 |
百度 | BD09 | 墨卡托 | ❌ | 外网项目 |
谷歌 | 火星(限国内) | 墨卡托 | ❌ | 外网项目 |
政府内网的底图 | 2000/WGS84 | 经纬度/墨卡托 | ✔️ | 内网项目 |
VectorLayer
- VectorLayer 矢量图层,业务之王,你会发现业务中到处是其身影
js
const cameraLayer = new YY.VectorLayer();
const pliceLayer = new YY.VectorLayer();
....
警告
一般来说我们将同一类型的数据放到同一个图层,比如监控探头的数据放到一个图层,警务人员的数据放到一个图层等
Overlay
- Overlay 覆盖物,是对地图上数据的统称,点,线,面,文字等,我们都叫覆盖物, 一个地图上可以多个 VetorLayer, 一个 VetorLayer 里可以有多个 Overlay
js
//创建一个点
const point = new YY.Point([120, 31]).addTo(layer);
point.on("click", (e) => {
console.log(e);
});
const line = new YY.Polyline([
[120, 31],
[120, 32]
]).addTo(layer);
.....