0
A
回答
2
我假设您使用OL v2。
一方面,标记需要您指定一个OpenLayers.LonLat对象。 另一方面,您可以使用OpenLayers.Bounds类定义任何边界,然后使用containsLonLat
方法检查它是否包含标记LonLat。 (检查http://dev.openlayers.org/releases/OpenLayers-2.13.1/doc/apidocs/files/OpenLayers/BaseTypes/Bounds-js.html)。
以同样的方式,如果你使用像点,线串等几何形状,你有像交叉检查这个方法。
+0
感谢您的回应,我发现这containsPoint为我工作 – rfm121741
0
我有我该检查的标志点进行示例代码中内多边形与否。
function init() {
map = new OpenLayers.Map("mapdiv");
map.addLayer(new OpenLayers.Layer.OSM());
epsg4326 = new OpenLayers.Projection("EPSG:4326"); //WGS 1984 projection
projectTo = map.getProjectionObject(); //The map projection (Spherical Mercator)
epsg900913 = new OpenLayers.Projection("EPSG:900913");
var lonLat = new OpenLayers.LonLat(lon, lat).transform(epsg4326, projectTo);
map.setCenter(lonLat, zoom);
map.addControl(new OpenLayers.Control.MousePosition());
var vectorLayer = new OpenLayers.Layer.Vector("Overlay");
var point = new OpenLayers.Geometry.Point(lonLat.lon, lonLat.lat);
var myPolygon = OpenLayers.Geometry.Polygon.createRegularPolygon
(
point,
5000,
4,
0
);
var featurecircle = new OpenLayers.Feature.Vector(myPolygon);
var markers = new OpenLayers.Layer.Markers(".\marker.png");
map.addLayer(markers);
markers.addMarker(new OpenLayers.Marker(lonLat));
controls = {
drag: new OpenLayers.Control.DragFeature(vectorLayer, {
autoActivate: true,
onComplete: displayBounds
})
//new OpenLayers.Control.DragFeature(vectorLayer)
};
for(var key in controls) {
map.addControl(controls[key]);
}
var featurePoint = new OpenLayers.Feature.Vector(
point,
{ description: 'info' },
{ externalGraphic: 'img/marker.png', graphicHeight: 25, graphicWidth: 21, graphicXOffset: -12, graphicYOffset: -25 }
);
vectorLayer.addFeatures([featurecircle]);
for(key in controls) {
var control = controls[key];
control.activate();
}
var bounds = vectorLayer.features[0].geometry.getBounds();
function displayBounds(feature){
var bounds = feature.geometry.getBounds();
var lonlat = new OpenLayers.LonLat(lon, lat).transform(epsg4326,epsg900913);;
if ((lonlat.lon < bounds.left) || (lonlat.lat > bounds.top) || (lonlat.lat < bounds.bottom) ||(lonlat.lon > bounds.right))
{
alert('out....');
}
}
map.addLayer(vectorLayer);
}
0
我解决这个与
var poly = new OpenLayers.Geometry.Polygon([linearRing]);
var polygonFeature = new OpenLayers.Feature.Vector(poly, null, siteStyle);
map.addLayer(vectors);
vectors.addFeatures([polygonFeature]);
var marker_point=new OpenLayers.Geometry.Point(lng,lat);
var inside=poly.containsPoint(marker_point);
if(inside)alert("Inside the polygon");
相关问题
- 1. 如何检查是否一个点是一个多边形
- 2. 检查点是一个多边形
- 3. 如何在多边形的每个坐标点放置一个标记?
- 4. SQLite点检查一个点是否在一个多边形内
- 5. 如何检测多边形的边角?
- 6. 如何检查一个点是否在KML多边形(GIS Shapefile)
- 7. 如何检测postgis中其他(多个)多边形中的多边形
- 8. 一组线条的多边形检测?
- 9. 如何确定一个多边形是否在另一个内?
- 10. 如何检测一个点是否在形状的边界(即'边缘')
- 11. 绘制多边形并检测标记是否在内
- 12. 如何检测标记是否在谷歌地图中的多边形内
- 13. 确定一个点的多边形是
- 14. 如何获得的OpenLayers多边形
- 15. 多个岛屿的一个多边形
- 16. 告诉leaflet.draw一个geojson多边形是一个矩形
- 17. kml多边形和标记在一起
- 18. ImageJ如何复制一个多边形
- 19. java如何将多个矩形合并为一个多边形
- 20. 如何绘制一个mysql多边形圈,而不是一个正方形?
- 21. 如何检测重叠的多边形?
- 22. 如何检测两个多边形是否具有相同的形状?
- 23. Box2D:如何检测多边形的哪一侧发生碰撞
- 24. 如何确定一个点是否是一个四边形
- 25. Google MAPS API中的多个多边形和多个标记
- 26. Mongodb:检查一个点是否在一个存储的多边形内
- 27. 多边形选择OpenLayers 3
- 28. 如何用n个矩形近似一个多边形?
- 29. 如何知道一个点是否在一个多边形的内部android
- 30. 如何在openlayers中设置多边形的坐标?
要关闭的问题,请注明答案通过点击绿色的对勾所接受,帮助解决你的问题的答案旁边。 –
但我找到了我自己的解决方案 – rfm121741
然后你应该发布你自己的答案/解决方案。 –