Vì vậy, nếu tôi có một điểm Latinh L/GPS tổng quát, có thể nói rằng, có điểm này là trong một tòa nhà, hoặc điểm này là trên một con đường mà một chiếc xe có thể đi du lịch?Bất kỳ cách nào để phân biệt một tòa nhà với một con đường trong Google Maps?
Trả lời
Tôi không nghĩ rằng bạn có thể xác định xem một điểm là một con đường hay một tòa nhà hoàn toàn với dữ liệu Google Maps. Để làm điều này tôi nghĩ rằng bạn sẽ cần một số nguồn dữ liệu bổ sung.
Tuy nhiên, bạn có thể xác định xem một điểm có phải là con đường hay không bằng cách sử dụng kỹ thuật Snap point to street.
Tôi đã viết lại kỹ thuật này để sử dụng API Google Maps v3 và thêm chức năng Haversine để cho bạn biết khoảng cách (tính bằng km) giữa điểm được nhấp gốc và điểm tương ứng trên đường gần nhất.
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no"/>
<meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
<title>Google Maps JavaScript API v3 Example: Directions Simple</title>
<link href="http://code.google.com/apis/maps/documentation/javascript/examples/default.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>
<script type="text/javascript">
rad = function(x) {return x*Math.PI/180;}
distHaversine = function(p1, p2) {
var R = 6371; // earth's mean radius in km
var dLat = rad(p2.lat() - p1.lat());
var dLong = rad(p2.lng() - p1.lng());
var a = Math.sin(dLat/2) * Math.sin(dLat/2) +
Math.cos(rad(p1.lat())) * Math.cos(rad(p2.lat())) * Math.sin(dLong/2) * Math.sin(dLong/2);
var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
var d = R * c;
return d.toFixed(3);
}
var dirn = new google.maps.DirectionsService();
var map;
function initialize() {
var center = new google.maps.LatLng(53.7877, -2.9832);
var myOptions = {
zoom:15,
mapTypeId: google.maps.MapTypeId.ROADMAP,
center: center
}
map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
google.maps.event.addListener(map, "click", function(event) {
// == When the user clicks on a the map, get directiobns from that point to itself ==
var request = {
origin: event.latLng,
destination: event.latLng,
travelMode: google.maps.DirectionsTravelMode.DRIVING
};
dirn.route(request, function(response, status) {
if (status == google.maps.DirectionsStatus.OK) {
if(response.routes && response.routes.length > 0){
route = response.routes[0];
if(route.overview_path && route.overview_path.length > 0){
pos = route.overview_path[0];
new google.maps.Marker({
position: pos,
map: map
});
alert(distHaversine(request.origin, pos));
}
}
}
});
});
}
</script>
</head>
<body onload="initialize()">
<div id="map_canvas"></div>
</body>
</html>
Tôi hy vọng điều này hữu ích.
Nơi tốt nhất để hỏi là https://gis.stackexchange.com/. Không thể tìm ra vị trí đường từ lớp chứa đường? Bạn sẽ được cung cấp tất cả các nút đường trong thời gian dài. Trừ khi đó là một đường cong, bạn có thể tìm thấy nếu điểm dài của bạn lies on the road line. Để chuyển đổi lat-long to cartesian, hãy làm theo liên kết.
Tôi đã làm một cái gì đó tương tự như thế này, nhưng nó là để xác định phần đường gần nhất cho một điểm GPS. Tôi đang cố gắng xác định một cách để biết liệu một chiếc xe đã bị lệch khỏi đường và sẽ có ảnh hưởng đến tòa nhà/cảnh quan/địa hình gồ ghề hay không. – Stevus
AFAIK, cách duy nhất để tìm ra điều đó là có một lớp nơi các tòa nhà được đánh dấu là tòa nhà (hoặc các vec-tơ bị chặn tương tự). Đối với địa hình, bản đồ cung cấp các vec-tơ bị ràng buộc mô tả đường nét và nhiều địa hình khác. Nếu bạn có thể thuê ngoài công việc của mình, bạn cũng có thể tạo một lớp để tạo thủ công một lớp và đánh dấu tất cả các tòa nhà trong đó, sử dụng AutoCAD (đó là cách tạo bản đồ) HOẶC mua bản đồ hoặc lớp từ những nguồn đã đánh dấu tòa nhà. – Nav
Bất kỳ ý tưởng nào để tải xuống/mua bộ dữ liệu bản đồ GPS? Tôi sử dụng OpenStreetMap rất nhiều, nhưng tôi tò mò muốn biết Google đang tạo ra các khung nhìn bản đồ của nó như thế nào. Họ phải lấy dữ liệu từ đâu đó tương tự. – Stevus
- 1. Tính khoảng cách trong một tòa nhà
- 2. Cách Google làm Con trỏ đường phố của Maps "Theo dõi"
- 3. Tuyến đường/lối đi/đường tùy chỉnh trên Google Maps
- 4. Ném trứng từ một tòa nhà
- 5. Cách thiết kế bản đồ trong nhà của một tòa nhà Android?
- 6. Sử dụng API bản đồ trong nhà của Google Maps bằng HTML5 và JavaScript
- 7. API MapQuest: Bất kỳ lý do gì để sử dụng nó trên Google Maps?
- 8. Bất kỳ cách nào để tạo một Dấu phân cách trong trình đơn WPF hẹp hơn?
- 9. C#: Bất kỳ cách nào để có được giới hạn 260 ký tự của một con đường đầy đủ?
- 10. Phân biệt một đường ống từ một tệp trong Unix
- 11. Cách tự động làm nổi bật SIDE của một con đường (hoặc vẽ một đường bên cạnh) với google maps hoặc mapquest trên Android
- 12. DrawerLayout với Google Maps
- 13. Vẽ chỉ đường trên Google Maps
- 14. Làm thế nào để tạo một bản đồ 2D ngẫu nhiên cho một lâu đài hoặc tòa nhà?
- 15. Hiển thị một Tripple trong Google Maps
- 16. Cách theo dõi vị trí của thiết bị Android trong một tòa nhà?
- 17. Làm cách nào để tích hợp Salesforce với Google Maps?
- 18. bất kỳ cách nào để "ping" một số điện thoại?
- 19. GDI +: Làm cách nào để vẽ một đường dài một inch trên bất kỳ thiết bị nào được vẽ trên?
- 20. Khoảng cách chỉ đường trong Google Maps API v3
- 21. MSBuild - Thêm các tệp được "làm sạch" trong một tòa nhà
- 22. Nhận chiều cao của tòa nhà từ bản đồ API
- 23. Tôi làm cách nào để tìm giao lộ gần nhất thông qua API Google Maps?
- 24. Cách tốt nhất để tạo bản đồ của tòa nhà tùy chỉnh cho iOS
- 25. tòa nhà bằng cách sử dụng nhiều máy
- 26. Phân tích JSON API Google Maps trong Ứng dụng Android
- 27. làm thế nào để vẽ một con đường một nơi đến một nơi khác trong bản đồ google sdk iOS?
- 28. iOS với Google Maps
- 29. Bất kỳ cách nào trong C++ để chuyển tiếp khai báo một nguyên mẫu hàm?
- 30. Tuyến đường thẳng của Google Maps Api (ngắn nhất)
Tôi cho rằng điều này có thể được sử dụng để xác định xem một điểm có nằm ngoài đường không. Tôi đã nhập một tấn điểm gps từ OpenStreetMap chỉ là những con đường của một phần tôi đã chỉ định, nhưng tôi biết việc kiểm tra một điểm đối với toàn bộ bộ sưu tập sẽ không phải là cách tốt nhất. – Stevus