Więc jeśli mam ogólny GPS Lat/Lng, czy można powiedzieć: tak, ten punkt znajduje się w budynku, lub ten punkt znajduje się na drodze, którą może przejechać samochód?Jakikolwiek sposób odróżnić budynek od drogi w Google Maps?
Odpowiedz
Nie sądzę, aby można było określić, czy dany punkt to droga, czy budynek wyłącznie z danymi w Mapach Google. Aby to zrobić, potrzebuję trochę dodatkowego źródła danych.
Możesz jednak być w stanie określić, czy punkt jest drogą, korzystając z techniki Snap point to street.
Napisałem ponownie technikę korzystania z Google Maps API v3 i dodałem funkcję Haversine, aby podać odległość (w km) między oryginalnym klikniętym punktem a odpowiednim punktem na najbliższej ulicy.
<!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>
Mam nadzieję, że to będzie pomocne.
Najlepsze miejsce do zapytania to https://gis.stackexchange.com/. Czy nie jest możliwe ustalenie lokalizacji drogi z warstwy zawierającej drogi? Otrzymasz maksymalną liczbę wszystkich węzłów drogowych. O ile nie jest to zakrzywiona linia, możesz znaleźć, czy twój długi punkt lies on the road line. Aby przekonwertować lat-long to cartesian, kliknij link.
Zrobiłem coś podobnego do tego, ale chodzi o określenie najbliższego odcinka drogi z punktem GPS. Próbuję określić sposób, aby stwierdzić, czy samochód zboczył z drogi i uderzyłby w budynek/krajobraz/nierówny teren. – Stevus
AFAIK, jedyny sposób, aby to zrozumieć, to mieć warstwę, w której budynki są oznaczone jako budynki (lub podobne ograniczone wektory). Jeśli chodzi o teren, mapy dostarczają ograniczonych wektorów, które przedstawiają kontury i różne inne tereny. Jeśli możesz zlecić na zewnątrz swoją pracę, możesz również poprosić kogoś, aby ręcznie utworzył warstwę i oznaczył wszystkie budynki w niej, używając AutoCAD (tak tworzy się mapy) LUB kupił mapy lub warstwy ze źródeł, które już zaznaczyły budynki. – Nav
Jakiś pomysł, skąd pobrać/kupić zestawy danych mapy GPS? Często używam OpenStreetMap, ale jestem ciekawy, jak Google tworzy swoje widoki map. Muszą uzyskiwać swoje dane z czegoś podobnego. – Stevus
- 1. łamaną przystawki do drogi przy użyciu Google Maps API v3
- 2. Google Maps v3 ukrywanie elementów (drogi, roadsigns, etc)
- 3. Google Maps API directionsService.route różni się od Google Maps Directions
- 4. wyłączyć nakładkę na drogi na mapach google
- 5. Narysuj mapę polilinii na drodze Aplikacja Google Maps Google Maps
- 6. Zdobądź polilinię od Google maps directions V3
- 7. Ciągnij od dołu Widok jak Google Maps
- 8. RAISERROR - Jak odróżnić od SqlException?
- 9. Jak odróżnić grafikę od fotografii?
- 10. Adres autouzupełniania + Google Maps API
- 11. Jakikolwiek sposób na uzyskanie obsługi wielu regionów w Google Appengine?
- 12. Wywołanie drogi ekspresowej wewnętrznie od NodeJS wewnątrz
- 13. Google maps odległość approximation
- 14. Jak odróżnić getter od settera od zwykłej właściwości w JavaScript?
- 15. Google Maps Prostokąt edytowalny: jak zablokować (naprawić) wysokość od edycji
- 16. Jak odróżnić ciąg przeróbek od literału literowego?
- 17. Google Earth Heat Maps
- 18. DrawerLayout z Google Maps
- 19. Google Maps Api w warstwach
- 20. Google maps removal control
- 21. Jak odróżnić nieodebrane połączenie od odmowy odpowiedzi?
- 22. Jak odróżnić debugger LLDB od obsługi SIGBUS?
- 23. Jak wyodrębnić kod pocztowy od V3 Google Maps API
- 24. Jak odróżnić strukturę od biblioteki funkcji?
- 25. Jak odróżnić parametry zapytań od ścieżki Parametry
- 26. Jak programowo odróżnić Xsun od Xorg?
- 27. Google Maps i DART
- 28. Google maps infobox - maxWidth
- 29. Google Maps Infowindow Pozycja
- 30. Google Maps API DeletedApiProjectMapError
Przypuszczam, że można to wykorzystać w celu ustalenia, czy punkt leży poza drogą. Zaimportowałem mnóstwo punktów GPS z OpenStreetMap, które były tylko drogami z sekcji, którą określiłem, ale wiem, że sprawdzenie jednego punktu względem całej kolekcji nie byłoby najlepszym sposobem. – Stevus