【发布时间】:2017-03-30 10:47:47
【问题描述】:
我的地理服务器中有一个使用 EPSG:4326 的英国县形状文件(多面体)。我正在使用打开的第 3 层在我的应用程序中加载此形状文件,如下所示:
source = new ol.source.XYZ({url: '/gmaps?zoom={z}&x={x}&y={y}&Layers=UKCounties', crossOrigin: "anonymous"});
countiesLayer = new ol.layer.Tile({source: source});
map.addLayer(countiesLayer);
这很好用。我需要获取用户的当前位置,这是完成的
var coordinate = geolocation.getPosition();
我可以在这里检索到正确的纬度和经度。例如:纬度 = 53.797534899999995,Lng = -1.5449。现在我需要检查这些点在使用开放层 3 和 Javascript 中的哪些县(多边形)。 使用 Geoserver WFS,我可以将每个县的边界框设为
$.each(features, function(index, eachFeature) {
var bbox = eachFeature.properties.bbox;
if (bbox != null) {
var bottomLeft = ([bbox[0], bbox[1]]);
var topRight = ([bbox[2], bbox[3]]);
var extent = new ol.extent.boundingExtent([bottomLeft, topRight]);
if (ol.extent.containsXY(extent1,lat,long)) {
alert("got the feature");
}
}
});
问题是我的代码没有打印警报语句。我也尝试过使用
if (ol.extent.containsXY(extent,long,lat))
和
var XY = ol.proj.transform([long, lat], 'EPSG:4326', 'EPSG:3857');
if (ol.extent.containsXY(extent,XY[0],XY[1])) if (ol.extent.containsXY(extent,XY[1],XY[0]))
但是这些都没有打印警报。这有什么问题吗?
【问题讨论】:
-
你确定你的 bottomLeft 和 topRight 是对的吗? wfs后你得到的espg是什么?
标签: javascript geolocation openlayers-3 geoserver