là có bất kỳ thuật toán nào để kiểm tra điểm đánh dấu nằm bên trong hoặc bên ngoài Đa giác, Hình chữ nhật và hình tròn. Tôi đã cố gắng viết một hàm bằng cách sử dụng link này. nhưng không thành công.Tờ rơi :: Cách kiểm tra điểm nằm bên trong/bên ngoài đa giác hoặc hình chữ nhật
Trả lời
Nếu bạn đang sử dụng PHP sau đó chức năng này hoạt động
$c = false;
$vertices_x = array(22.333,22.222,22,444); //latitude points of polygon
$vertices_y = array(75.111,75.2222,76.233); //longitude points of polygon
$points_polygon = count($vertices_x);
$longitude = 23.345; //latitude of point to be checked
$latitude = 75.123; //longitude of point to be checked
if (is_in_polygon($points_polygon, $vertices_x, $vertices_y, $longitude, $latitude)){
echo "Is in polygon!"."<br>";
}
else {
echo "Is not in polygon";
}
function is_in_polygon($points_polygon, $vertices_x, $vertices_y, $longitude_x, $latitude_y) {
$i = $j = $c = 0;
for ($i = 0, $j = $points_polygon-1; $i < $points_polygon; $j = $i++) {
if (($vertices_y[$i] > $latitude_y != ($vertices_y[$j] > $latitude_y)) && ($longitude_x < ($vertices_x[$j] - $vertices_x[$i]) * ($latitude_y - $vertices_y[$i])/($vertices_y[$j] - $vertices_y[$i]) + $vertices_x[$i])) {
$c = !$c;
}
}
return $c;
}
cảm ơn rất nhiều @komal –
chức năng này sẽ hoạt động với hình chữ nhật như tốt? – user2485649
có một chức năng trong tờ rơi để kiểm tra này.
Polygon.getBounds().contains(MarketLatLng);
Điều này sẽ chỉ kiểm tra xem điểm có nằm trong hình chữ nhật bao quanh của đa giác không - nếu nó được chứa bởi chính đa giác đó. –
Để làm cho nó thông minh hơn, sử dụng thuật toán ** đúc ** ([được giải thích tại đây] (http://www.ecse.rpi.edu/Homepages/wrf/Research/Short_Notes/pnpoly.html)). [Ví dụ về việc triển khai] (https://github.com/substack/point-in-polygon/blob/master/index.js) – szymonm
Mã javascript hoạt động có sẵn [ở đây] (https://github.com/ substack/point-in-polygon/blob/master/index.js). – Aneesh
<!-- <!DOCTYPE html>
<html>
<head>
<title>Simple Map</title>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no">
<meta charset="utf-8">
<style>
#map-canvas {
margin: 0;
padding: 0;
width: 700px;
height: 500px;
}
</style>
<script src="https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false"></script>
<script>
var map;
var marker;
var latlong = [["21.001663","75.486069"],
["20.108977","73.914672"],
["21.1458","79.088155"],
["19.153061","77.305847"],
["20.0831","73.79095"],
["18.52043","73.856744"],
["16.774832","74.486265"],
["16.691308","74.244866"],
["19.876165","75.343314"],
["19.997453","73.789802"],
["20.532949","76.184303"],
["21.013321","75.563972"],
["18.9513","72.82831"],
["18.515752","73.182162"],
["19.075984","72.877656"],
["19.218331","72.97809"],
["19.844006","79.36266"],
["20.745319","78.602195"],
["21.267052","78.577973"],
["18.52043","73.856744"],
["19.96955","79.304654"],
["19.450585","72.799155"],
["18.52043","73.856744"],
["20.745319","78.602195"],
["18.9833","75.7667"],
["21.013321","75.563972"],
["21.1458","79.088155"],
["19.153061","77.305847"]];
function initialize() {
var mapOptions = {
zoom: 4,
center: new google.maps.LatLng(21.7679, 78.8718),
mapTypeId: google.maps.MapTypeId.ROADMAP
};
map = new google.maps.Map(document.getElementById('map-canvas'),
mapOptions);
drawCircle();
}
function drawCircle()
{
var options = {
strokeColor: '#800000',
strokeOpacity: 1.0,
strokeWeight: 1,
fillColor: '#C64D45',
fillOpacity: 0.5,
map: map,
center: new google.maps.LatLng(21.7679, 78.8718),
radius: 100000
};
circle = new google.maps.Circle(options);
var bounds= circle.getBounds();
for (var i = 0; i < latlong.length; i++){
var hello =new google.maps.LatLng(latlong[i][0], latlong[i][1]);
if(bounds.contains(hello))
{
marker= new google.maps.Marker({
position:hello,
});
marker.setMap(map);
console.log("Hi iam in bound");
}
else
{
console.log("Iam not in bound");
}
}
}
google.maps.event.addDomListener(window, 'load', initialize);
</script>
</head>
<body>
<div id="map-canvas"></div>
</body>
</html> -->
cảm ơn .. nhưng mã của bạn hoạt động với google apis. và tôi muốn kiểm tra điểm với aplet tờ rơi –
- 1. vẽ đa giác bằng tờ rơi js
- 2. Nhãn đơn giản trên một đa giác tờ rơi (geojson)
- 3. Canvas hình ảnh Delphi ... vẽ một khu vực (hình tam giác, hình chữ nhật, đa giác)
- 4. Kiểm tra xem một điểm có nằm trong một hình chữ nhật xoay (C#)
- 5. Điểm trong thuật toán đa giác xử lý các đa giác nằm ngang antemeridian
- 6. Mongodb: Kiểm tra xem một điểm có nằm trong một đa giác được lưu trữ không
- 7. Tính Hình chữ nhật Vạch ở Góc của Đa giác
- 8. Khoảng cách từ điểm đến đa giác
- 9. Kiểm tra xem liên kết có nằm trong hoặc ngoài
- 10. Tìm một hình chữ nhật bị chặn bên trong một đa giác lõm/lồi
- 11. Khoảng cách từ điểm đến đa diện hoặc đa giác
- 12. Điền vào bên ngoài đa giác | Mảng mặt nạ trong đó các chỉ báo nằm ngoài ranh giới tròn?
- 13. Cách tự động cập nhật điểm đánh dấu trên bản đồ tờ rơi, với thiên thạch
- 14. WPF: Tìm hình ảnh 3D nằm bên trong hình chữ nhật 2D
- 15. Google Maps v3: kiểm tra xem điểm có tồn tại trong đa giác
- 16. Chia đa giác đơn giản, đa giác thành đa giác hoặc đa giác đơn giản thực sự
- 17. Cách kiểm tra giao điểm giữa 2 hình chữ nhật được xoay?
- 18. cập nhật vị trí điểm đánh dấu với tờ rơi API
- 19. Điểm trong Đa giác có kiểm tra bằng SVG và JavaScript không?
- 20. Hình học 2D: cách kiểm tra xem một điểm có nằm trong một góc
- 21. Hình chữ nhật từ các điểm sử dụng Python
- 22. Tờ rơi: Thêm liên kết vào các điểm đánh dấu
- 23. Kiểm tra xem điểm được chiếu trên đoạn đường không nằm ngoài nó
- 24. Điểm ngẫu nhiên Postgis bên trong một đa giác
- 25. Làm cách nào để kiểm tra xem có bất kỳ điểm nào (hoặc một phần) của một đường thẳng hay chạm vào hình chữ nhật
- 26. Xác định xem một điểm có nằm trong đa giác không?
- 27. Kéo và thả jQuery - kiểm tra để thả bên ngoài một giọt có thể rơi xuống
- 28. Kiểm tra xem Đa giác có tự liên kết
- 29. Sử dụng jQuery để kiểm tra xem một liên kết có nằm trong hoặc ngoài
- 30. Làm cách nào để tương tác với lớp đánh dấu tờ rơi từ bên ngoài bản đồ?
Đối với những gì nó có giá trị, Leaflet API cung cấp giới hạn kiểm tra các hình chữ nhật bằng cách sử dụng chức năng 'contains'. http://leafletjs.com/reference.html#bounds Mặc dù không sử dụng cho đa giác và hình tròn. –
https://github.com/mapbox/leaflet-pip Là một tờ rơi bổ sung cung cấp một hàm thực hiện kỹ thuật dò tìm tia để xác định xem một điểm nằm trong một đa giác hay không. –
tờ rơi-pip phải là câu trả lời được chấp nhận. làm việc tốt (sau khi vá tập tin nguồn: loại bỏ "l instanceof L.MultiPolygon", https://github.com/mapbox/leaflet-pip/issues/8) – AlainIb