Pregunta

Estoy trabajando en un sitio web de perfil que muestra la ubicación de las personas que usan Google Maps.

Implementé google maps y ahora muestra dónde vive la persona que estás viendo y dónde vives.

El código está aquí:

  var map = null;
  var geocoder = null;

  function initialize() {
    if (GBrowserIsCompatible()) {
      map = new GMap2(document.getElementById("map"));
      map.addControl(new GLargeMapControl());
      map.addControl(new GScaleControl());
      map.addControl(new GMapTypeControl());
      geocoder = new GClientGeocoder();
    }
  }

  function showAddresses(address1,address2) {
    if (geocoder) {
      geocoder.getLatLng(
        address1,
        function(point) {
          if (!point) {
            alert(address1 + " not found");
          } else {
            map.setCenter(point, 13);
            var marker = new GMarker(point);
            map.addOverlay(marker);
            marker.openInfoWindowHtml(address1);
          }
        }
      );

      geocoder.getLatLng(
      address2,
      function(point) {
        if (!point) {
          alert(address2 + " not found");
        } else {
          map.setCenter(point, 13);
          var marker = new GMarker(point);
          map.addOverlay(marker);
        }
      }
    );
    }
  }

Sin embargo, lo que no hace es modificar el nivel de zoom cuando los 2 lugares están tan separados que no caben en el mapa juntos. No sé cómo solucionarlo.

El siguiente paso es que quiero que el mapa muestre una ruta visual entre los dos puntos y su distancia al seguir esa ruta. Lo he intentado en el sitio de Google Maps y sé que tienen esta funcionalidad. Simplemente no puedo encontrar ninguna documentación sobre cómo implementarlo.

¿O sería mejor simplemente hacer un hipervínculo que vaya a google maps y le proporcione una página preparada? Eso tampoco sé cómo.

¿Fue útil?

Solución

Nunca lo hice, pero vi GDirections en la api:

http://code.google.com/apis/maps /documentation/reference.html#GDirections

Parece lo que estás buscando.

Otros consejos

Agregue todos los puntos a un Polígono. Desde el Polígono, obtenga los LatLngBounds, que se pueden usar para obtener el nivel de zoom.

    private function setMapZoomLevelBasedOnPlottedPoints(polygonPoints:Array):void
    {
        var pointBounds:LatLngBounds = getLatLongBounds(polygonPoints);
        _map.setCenter(pointBounds.getCenter());
        _map.setZoom(_map.getBoundsZoomLevel(pointBounds) - 1);
    }

    private function getLatLongBounds(polygonPoints:Array):LatLngBounds
    {
    for(var i:Number; i < polygonPoints; i++)
    {
            polygonPoints.push(polygonPoints[i] as LatLong);
    }
        var polygon:IPolygon = new Polygon(polygonPoints);
        return polygon.getLatLngBounds();
    }

Está en la API. puedes encontrarlo con

route site:http://code.google.com/apis/maps

Aquí hay una página, por ejemplo, que muestra " instrucciones del conductor " en una superposición con Flash. La API es un poco diferente cuando está haciendo mapas fuera de flash, pero es el mismo código básico. http://code.google.com/apis/maps/documentation/ flash / services.html

Trabajé más con MapQuest, así que estoy ingresando a la API de Google Maps.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top