Entonces, si tengo un punto GPS Lat/Lng general, ¿sería posible decir que sí, que este punto está en un edificio, o que este punto está en una carretera por la que un automóvil podría viajar?¿Alguna forma de diferenciar un edificio de una carretera en Google Maps?
Respuesta
No creo que pueda determinar si un punto es una carretera o un edificio puramente con datos de Google Maps. Para hacer esto, creo que necesitaría alguna fuente de datos adicional.
Sin embargo, es posible que pueda determinar si un punto es una carretera utilizando la técnica Snap point to street.
He vuelto a escribir la técnica para utilizar Google Maps API v3 y he añadido la función Haversine para indicar la distancia (en km) entre el punto seleccionado originalmente y el punto correspondiente en la calle más cercana.
<!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>
Espero que sea útil.
El mejor lugar para preguntar es https://gis.stackexchange.com/. ¿No es posible determinar la ubicación de la carretera desde la capa que contiene las carreteras? Te darán los lat-long de todos los nodos de ruta. A menos que sea una línea curva, puede encontrar si su punto de latitud larga lies on the road line. Para convertir lat-long to cartesian, siga el enlace.
He hecho algo similar a esto, pero es para determinar la sección de carretera más cercana dado un punto de GPS. Estoy tratando de determinar una forma de saber si un automóvil se ha desviado de la carretera y habría chocado con un edificio/paisaje/terreno accidentado. – Stevus
AFAIK, la única manera de averiguarlo es tener una capa donde los edificios se marcan como edificios (o vectores similares). En cuanto al terreno, los mapas proporcionan vectores delimitados que representan los contornos y varios otros terrenos. Si puede subcontratar su trabajo, también puede conseguir que alguien cree manualmente una capa y marque todos los edificios, utilizando AutoCAD (así es como se hacen los mapas) O compre mapas o capas de fuentes que ya hayan marcado los edificios. – Nav
¿Alguna idea de dónde descargar/comprar juegos de datos de mapas GPS? Uso mucho OpenStreetMap, pero tengo curiosidad por saber cómo está creando Google sus vistas de mapas. Deben obtener sus datos de algún lugar similar. – Stevus
- 1. Eliminar un mapa/forma de Google maps
- 2. Obtener coordenadas de un punto en una carretera
- 3. desactivar superposición de carreteras en google maps
- 4. polilínea complemento a la carretera usando API de Google Maps v3
- 5. ¿Hay alguna forma de diferenciar archivos de C++?
- 6. Google Maps: dado un punto, ¿cómo encontrar todos los puntos a una determinada distancia de la carretera?
- 7. imagen de Google Maps?
- 8. API de MapQuest: ¿Alguna razón para usarla en Google Maps?
- 9. Google maps abrir ventana de información de forma predeterminada?
- 10. Cómo obtener el límite de velocidad marcado de una carretera, fuera de longitud y latitud
- 11. Uso de archivos KMZ en Google Maps
- 12. Google Maps Bubble Templates
- 13. Google Maps y DART
- 14. Google maps optimización de polígono
- 15. Incrustar Google Maps en C#
- 16. Cómo resaltar una región en Google Maps
- 17. ¿Hay alguna manera de colocar un pin en la aplicación de google maps iphone usando openURL?
- 18. trazando una ruta en Google Maps
- 19. Mostrando un Triple en Google Maps
- 20. estilos de carga en Google Maps Asistente
- 21. Marcado de calles en Google Maps
- 22. Android - Enrutamiento de Google Maps
- 23. ¿Mejores prácticas de Google Maps?
- 24. Google Maps en escala de grises
- 25. google maps estilo uipopovercontroller
- 26. ¿Cómo elimino un marcador en Google Maps?
- 27. ¿Hay alguna forma de agregar funciones en Google App Engine?
- 28. ¿Una clave de Google Maps para todos los desarrolladores?
- 29. Google maps eliminación de controles
- 30. Múltiples instancias de Google Maps en una página
Supongo que esto podría usarse para determinar si un punto se encuentra fuera de la carretera. Importé una tonelada de puntos GPS de OpenStreetMap que eran solo carreteras de una sección que especifiqué, pero sé que verificar un punto en contra de toda la colección no sería la mejor manera. – Stevus