介绍一些XYZ矢量地图地址,
谷歌
http://www.google.cn/maps/vt/pb=!1m4!1m3!1i{z}!2i{x}!3i{y}!2m3!1e0!2sm!3i345013117!3m8!2szh-CN!3scn!5e1105!12m4!1e68!2m2!1sset!2sRoadmap!4e0
高德地图 style=6/7/8 卫星图是6,
http://webst0{1-4}.is.autonavi.com/appmaptile?lang=zh_cn&size=1&scale=1&style=7&x={x}&y={y}&z={z}
炫酷地图
http://map.geoq.cn/ArcGIS/rest/services/ChinaOnlineStreetPurplishBlue/MapServer/tile/{z}/{y}/{x}
自定义缩放
/* 自定义控制层级变化 */
changeZoom=(state)=>{
var view = map.getView();
var zoom = view.getZoom();
if (state) {
view.setZoom(zoom + 1);
}else{
view.setZoom(zoom - 1);
}
}
效果:
设置中心点
/* 设置中心点 */
/* [13377148.370579995,3546089.601028211] */
var mapView = new View({
center: [120,30],
projection: 'EPSG:4326',/* 指定投影使用EPSG:4326 */
zoom: 14, /* 层级 */
minZoom:4, /* 层级 */
maxZoom:16 /* 最大层级 */
})
OpneLayers弹框
根据地图的左右上下移动而移动
案例地址:https://openlayers.org/en/latest/examples/popup.html?q=Overlay。
计算两点之间的距离
Api文档地址:https://openlayers.org/en/latest/apidoc/module-ol_sphere.html
getDistance
var c1 = [120.21240234375001,30.240086360983426];//起始点,杭州
var c2 = [113.57666015625,34.74161249883172] //起始点,郑州
var earch_radius=6371008.8; // 地球半径 平均值 米
console.log(getDistance(c1,c2,earch_radius)/1000) //拿到KM
比例尺
scaleLine
Api文档地址:https://openlayers.org/en/latest/examples/scaleline-indiana-east.html?q=ScaleLine
获取到地图左右两边的经纬度
1.拿到地图中心点的经纬度,当前地图的分辨率;
2.拿到地图的长度,宽度
/* 监听层级变化,输出当前层级和分辨率 */
map.getView().on('change:center', function(){
const height = document.documentElement.clientHeight;
const width = document.documentElement.clientWidth;
const center = this.getCenter()/* 地图中心点 */
var distinguishability = this.getResolution() /* 拿到分辨率 */
var longitude = distinguishability*width/2 /* 经度距离 */
var latitude = distinguishability*height/2 /* 纬度距离 */
that.setState({leftBottom:[center[0]-longitude,center[1]-latitude],topRight:[center[0]+longitude,center[1]+latitude]})
})
图层元素选中控制
1.Select API
|
var selectSingleClick = new Select({
// style:jeosionStyle,
hitTolerance:5
});
mapEvent.addInteraction(selectSingleClick);
this.setState({selectFeature:selectSingleClick})
/*获取到选中的信息*/
selectSingleClick.on('select', (e)=>{
var features= e.target.getFeatures().getArray();
console.log(features)
})