gpt4 book ai didi

javascript - 开放层 3 : Drawing a polygon feature over the dateline

转载 作者:行者123 更新时间:2023-11-29 10:11:42 25 4
gpt4 key购买 nike

我正在尝试绘制一个与国际日期变更线重叠的简单方框多边形。当前,在创建多边形时,它会以相反的方向环绕。

完整示例:http://jsfiddle.net/mcroteau/dkk2yu3L/

期望的输出:

Desired Polygon

实际输出:

enter image description here

Javascript:

var wgs84Proj = new ol.proj.Projection({ code : "EPSG:4326" });
var origProj = new ol.proj.Projection({ code : "EPSG:900913" });

var mapTile = new ol.layer.Tile({
source: new ol.source.OSM()
});


var convertedCoordinates = [];
var unformattedCoordinates = [[175, 70], [175, 60], [-160, 60], [-160, 70]];


$(unformattedCoordinates).each(function(index, coordinate){
var lat = coordinate[0];
var lon = coordinate[1];

var circle = new ol.geom.Circle([lat, lon])
circle.transform(wgs84Proj, origProj);

convertedCoordinates.push(circle.getCenter());
});

var polygonGeometry = new ol.geom.Polygon([convertedCoordinates])
var polygonFeature = new ol.Feature({ geometry : polygonGeometry });

var vectorSource = new ol.source.Vector();
vectorSource.addFeature(polygonFeature);

var vectorLayer = new ol.layer.Vector({
source: vectorSource
});


var mapView = new ol.View({
center: [-19000000, 9500000],
zoom: 3
})

var map = new ol.Map({
layers : [mapTile],
target : 'map',
view : mapView
});

map.addLayer(vectorLayer);

我不确定是否有我在 OpenLayers 3 API 中遗漏的配置设置或必须对数据点进行的转换。任何指导将不胜感激。

更新的工作示例

http://jsfiddle.net/mcroteau/edt92p23/

最佳答案

只需将 X 坐标加上 360 度(或所用投影的总宽度),即可使它们在世界中位于右侧。将 [[175, 70], [175, 60], [-160, 60], [-160, 70]] 更改为 [[175, 70], [175, 60 ], [200, 60], [200, 70]].

OpenLayers 使用投影坐标。 [-160, 70] 位于 [175, 70] 的左侧/西部,因此在两点之间绘制的任何线都将向左(如您的示例所示)。要使其向右/向东移动,您必须确保 X 坐标更高。

http://jsfiddle.net/dkk2yu3L/4/

关于javascript - 开放层 3 : Drawing a polygon feature over the dateline,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32260021/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com