Ver Mensaje Individual
  #7 (permalink)  
Antiguo 21/02/2010, 15:27
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Marcador con boton derecho en Google Maps

En realidad es terriblemente simple, porque lo que devuelve GoogleMaps es un XML con vaios parámetros. Uno de esos parámetros indica el nivel de precisión logrado en la georeferenciación, y es el que debes usar para saber si la posición cae en un mar o en la tierra.
Mira este ejemplo del propio GoogleMaps:
Reverse Geocoding with Geonames
Fijate que si clickeas en el mar, verás que el código de "country name" es "no country code found".
Otro ejemplo es: Reverse Geocoding

Todo lo que necesitas, a nivel de JavaScript, incluyendo el mapa (el centro de mapa lo puedes poner tu) es esto:
Código Javascript:
Ver original
  1. <script type="text/javascript">
  2.  
  3.     var map;
  4.     var geocoder;
  5.     var address;
  6.  
  7.     function initialize() {
  8.       map = new GMap2(document.getElementById("map_canvas"));
  9.       map.setCenter(new GLatLng(40.730885,-73.997383), 15);
  10.       map.setUIToDefault();
  11.       GEvent.addListener(map, "click", getAddress);
  12.       geocoder = new GClientGeocoder();
  13.     }
  14.    
  15.     function getAddress(overlay, latlng) {
  16.       if (latlng != null) {
  17.         address = latlng;
  18.         geocoder.getLocations(latlng, showAddress);
  19.       }
  20.     }
  21.  
  22.     function showAddress(response) {
  23.       map.clearOverlays();
  24.       if (!response || response.Status.code != 200) {
  25.         alert("Status Code:" + response.Status.code);
  26.       } else {
  27.         place = response.Placemark[0];
  28.         point = new GLatLng(place.Point.coordinates[1],
  29.                             place.Point.coordinates[0]);
  30.         marker = new GMarker(point);
  31.         map.addOverlay(marker);
  32.         marker.openInfoWindowHtml(
  33.         '<b>orig latlng:</b>' + response.name + '<br/>' +
  34.         '<b>latlng:</b>' + place.Point.coordinates[1] + "," + place.Point.coordinates[0] + '<br>' +
  35.         '<b>Status Code:</b>' + response.Status.code + '<br>' +
  36.         '<b>Status Request:</b>' + response.Status.request + '<br>' +
  37.         '<b>Address:</b>' + place.address + '<br>' +
  38.         '<b>Accuracy:</b>' + place.AddressDetails.Accuracy + '<br>' +
  39.         '<b>Country code:</b> ' + place.AddressDetails.Country.CountryNameCode);
  40.       }
  41.     }
  42.  
  43.  
  44.     </script>

Obviamente en el else de la función showAddress debes usar la respuesta de Google Maps de la forma que quieras... No es necesario seguir al pie de la letra lo que está en este script.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)