美文网首页开源
使用OpenLayers API zoomToExtent 缩放

使用OpenLayers API zoomToExtent 缩放

作者: 朱凤丽 | 来源:发表于2020-05-11 16:24 被阅读0次
一、概述
  1. 渲染某一条路,需要呈现整条路(需求)
  2. 不需要显示整条范围,只需要看见某条路
二、步骤
  1. 拿到整条高速的所有features
  2. 计算出最小的两个经纬度作为两个点
  3. 使用 zoomToExtent 设置范围
三、具体步骤
  1. 拿到的一整条路的features为数组,具体数据为下图


    image.png
  2. 如何计算得到两个点的经纬度

  • 渲染某一条路,需要呈现整条路
// 1. 排序得到最大最小经度和最大最小纬度

// 获取中心经纬度集合
var featureData = [];
for (let i = 0; i < features.length; i++) {
    let center = features[i].geometry.getCentroid();
    featureData.push(center);
}

var xMaxMin = featureData.sort((a,b)=>{
    return (a.x - b.x)
})

var yMaxMin = featureData.sort((a,b)=>{
    return (a.y - b.y)
})

let maxX = xMaxMin[0];  // 最大经度
let mixX = xMaxMin[xMaxMin.length-1];   // 最小经度

let maxY = yMaxMin[0];  // 最大纬度
let mixY = yMaxMin[yMaxMin.length-1];   // 最小纬度

// 2. 计算最大经(纬)度与最小经(纬)度的距离
let xDis = maxX.x - mixX.x;     // 经度距离
let yDis = maxY.y - mixY.y;     // 纬度距离

/**
 * 3. 通过对比经度和纬度计算得出的距离,来决定使用经度或者纬度
 * 如果经度距离大于纬度距离,则使用最大经度和最小经度
 * 反之使用最大纬度和最小纬度
 */
let lonlat = [];   // 范围数组
var polygon = '';  // 两点构成的面
if(xDis > yDis){
    lonlat = [[maxX.x, maxX.y], [mixX.x, mixX.y]]
    polygon = 'POLYGON(('+maxX.x + ' ' + maxX.y + ','+maxX.x + ' ' + mixX.y + ','+mixX.x + ' ' + mixX.y + ','+mixX.x + ' ' + maxX.y + ','+maxX.x + ' ' + maxX.y + '))';
}else{
    lonlat = [[maxY.x, maxY.y], [mixY.x, mixY.y]]
    polygon = 'POLYGON(('+maxY.x + ' ' + maxY.y + ','+maxY.x + ' ' + mixY.y + ','+mixY.x + ' ' + mixY.y + ','+mixY.x + ' ' + maxY.y + ','+maxY.x + ' ' + maxY.y + '))';
}

// 4. 设置范围
myMap.zoomToExtent(lonlat)
  • 不需要显示整条范围,只需要看见某条路
// 1. 设置显示投影参数,显示坐标皆为4326
let proj = new OpenLayers.Projection("EPSG:4326");

// 2. 获取中心点坐标
var center = featureData[parseInt(featureData.length/2)];

// 3. 坐标系转换(4326 To 900913)
let point = new OpenLayers.Geometry.Point(center.x, center.y);
point.transform(proj, myMap.map.getProjectionObject());

// 4. 设置中心点位置并把地图层级设置为12
myMap.map.setCenter([point.x,point.y],12);
参考openlayer官方文档
  1. OpenLayers.Projection


    image.png
  2. setCenter


    image.png

相关文章

网友评论

    本文标题:使用OpenLayers API zoomToExtent 缩放

    本文链接:https://www.haomeiwen.com/subject/knpunhtx.html