Incluye licencia y asistencia para empresas.
El API de Google Maps para Flash se ampliará de forma periódica, añadiendo nuevas funciones que a menudo se publican primero en maps.google.com. En esta sección se describen las funciones del API de Google Maps para Flash que se comunican con otros servicios de Google. Como tales, estas comunicaciones son normalmente asíncronas y requieren una gestión especial.
La codificación geográfica es el proceso de transformar direcciones (como "1600 Amphitheatre Parkway, Mountain View, CA") en coordenadas geográficas (como 37.423021 de latitud y -122.083739 de longitud), que se pueden utilizar para colocar marcadores o situar el mapa.
La asignación de identificadores geográficos en el API de Google Maps para Flash requiere una solicitud asíncrona a los servidores de Google. Por lo tanto, no podrás asignar un identificador geográfico a una dirección a través de una llamada a la función simple. Para asignar identificadores geográficos es necesario realizar los siguientes pasos:
ClientGeocoderGeocodingEventClientGeocoder.geocode()A continuación, la solicitud se enviará al servicio de asignación de identificadores geográficos de Google. Con la recepción de la respuesta, se generará un evento en el geocoder de cliente (ClientGeocoder) y se podrá utilizar la respuesta de asignación de identificadores geográficos.
El API de Google Maps para Flash proporciona un evento de asignación de identificadores geográficos (GeocodingEvent) para mantener los datos de respuesta asociados a una solicitud de asignación de identificadores geográficos. Este objeto enumera dos eventos:
GEOCODING_SUCCESSGEOCODING_FAILUREDeberás configurar detectores de eventos para ambos casos. Por ejemplo:
var geocoder:ClientGeocoder = new ClientGeocoder(); geocoder.addEventListener(GeocodingEvent.GEOCODING_SUCCESS, handleGeocodingSuccess); geocoder.addEventListener(GeocodingEvent.GEOCODING_FAILURE, handleGeocodingFailure);
En cada caso, el evento devuelve información relacionada con la solicitud de asignación de identificadores geográficos en las siguientes propiedades del propio evento de asignación de identificadores geográficos (GeocodingEvent):
request almacena la solicitud de asignación de identificadores geográficos original como cadena de texto.requestType almacena el tipo de asignación de identificadores geográficos (actualmente, el único tipo de solicitud es "asignación de identificadores geográficos").response.name almacena la solicitud de asignación de identificadores geográficos original como cadena de texto.response.placemarks.address almacena la dirección resuelta.response.placemarks.addressDetails almacena detalles de la dirección conforme al formato xAL (o eXtensible Address Language), un estándar internacional para el formato de direcciones.response.placemarks.point almacena el valor LatLng de la dirección codificada geográficamente.status contiene el estado de la solicitud de asignación de identificadores geográficos y normalmente almacena información adicional como, por ejemplo, el motivo por el que se ha producido un error en el intento de asignación de identificadores geográficos.(Ten en cuenta que la propiedad GeocodingResponse.placemarks devuelve una matriz de marcadores KML).
Una vez que hayas configurado los controladores adecuados para los eventos GeocodingEvent, podrás ejecutar una solicitud de codificación geográfica con el método ClientGeocoder.geocode(), que utiliza una dirección de cadena como único argumento.
En el siguiente ejemplo, creamos una instancia de geocoder de cliente (ClientGeocoder), añadimos detectores de eventos a los eventos GeocodingEvent y gestionamos codificaciones geográficas correctas moviendo el mapa a la dirección, añadiendo un marcador y añadiendo un detector de eventos al marcador que muestra la dirección si se hace clic en el marcador.
private function doGeocode(event:GeocodingEvent):void {
var geocoder:ClientGeocoder = new ClientGeocoder();
geocoder.addEventListener(GeocodingEvent.GEOCODING_SUCCESS,
function(event:GeocodingEvent):void {
var placemarks:Array = event.response.placemarks;
if (placemarks.length > 0) {
map.setCenter(placemarks[0].point);
var marker:Marker = new Marker(placemarks[0].point);
map.addOverlay(marker);
marker.addEventListener(MapEvent.CLICK,
function(event:MapEvent):void {
marker.openInfoWindow(new InfoWindowOptions({
title: "Geocoded Result",
content: placemarks[0[]].address
}));
});
}
});
geocoder.addEventListener(GeocodingEvent.GEOCODING_FAILURE,
function(event:GeocodingEvent):void {
trace("Geocoding failed");
});
geocoder.geocode(address.text);
}
Ver ejemplo (GeocodingSimple.html)
Ver origen (GeocodingSimple.mxml)
Puedes añadir instrucciones para llegar en coche con el API de Google Maps para Flash mediante el objeto Directions. El objeto Directions solicita resultados de rutas mediante cadenas de consultas (por ejemplo, "Nueva York, NY a Chicago, IL") o latitudes y longitudes textuales (por ejemplo, "40.712882, -73.967257 a 41.943181, -87.770677"). Puedes especificar hitos para solicitar rutas entre dos o más puntos. Por ejemplo, si introduces la solicitud "Nueva York, NY a Chicago, IL a San Francisco, CA", obtendrás instrucciones para ambos segmentos.
Las instrucciones para llegar en coche se solicitan mediante el método Directions.load() asíncrono. Este método requiere una cadena de consulta y un conjunto de parámetros opcionales de DirectionsOptions. Ten en cuenta que el objeto de instrucciones no se rellena con información de devolución inmediatamente, ya que esta información se tiene que solicitar desde los servidores de Google. For this reason, the Directions object defines the following two DirectionsEvent events which you can intercept to determine this state: DIRECTIONS_SUCCESS y DIRECTIONS_FAILURE.
De forma predeterminada, se asume que las rutas son indicaciones para llegar en coche, aunque puedes solicitar otros modos de viaje. Para ello, debes transmitir una constante en el objeto DirectionsOptions al ejecutar el método Directions.load(). A continuación se especifican los modos de viaje compatibles:
DirectionsOptions.TRAVEL_MODE_DRIVING indica las instrucciones para llegar en coche estándar a través de la red de carreteras.DirectionsOptions.TRAVEL_MODE_WALKING solicita indicaciones para llegar a pie a través de aceras y rutas peatonales (según disponibilidad).Nota: Walking directions may sometimes not include clear pedestrian paths; as a result, requesting walking directions will initially display a warning message box the first time such directions are retrieved.
Una vez que las rutas se hayan devuelto correctamente, el objeto Directions almacenará internamente una polilínea codificada que representa las instrucciones en el mapa y una serie de indicaciones textuales en campos de formato de texto y HTML. Para visualizar las rutas en el mapa, utiliza Directions.createPolyline().
private function onMapReady(event:Event):void {
// Create a directions object
var dir:Directions = new Directions();
dir.addEventListener(DirectionsEvent.DIRECTIONS_SUCCESS, onDirLoad);
dir.addEventListener(DirectionsEvent.DIRECTIONS_FAILURE, onDirFail);
dir.load("77 Massachusetts Avenue, Cambridge, MA to 4 Yawkey Way, Boston, MA 02215 (Fenway Park)");
}
private function onDirFail(event:DirectionsEvent):void {
// Process failure, perhaps by showing an alert
}
private function onDirLoad(event:DirectionsEvent):void {
var dir:Directions = event.directions;
map.clearOverlays();
map.addOverlay(dir.createPolyline());
}
Ver ejemplo (DirectionsSimple.html)
Ver origen (DirectionsSimple.mxml)
Las rutas en formato de texto y HTML se devuelven con una serie de uno o varios objetos Route, consistente cada uno en un segmento especificado en la consulta original. A su vez, cada ruta se compone de uno o varios objetos Step, que contienen las instrucciones detalladas. Puedes recuperar las rutas con el método Directions.getRoute(i:Number), donde el número transmitido hace referencia al segmento de las instrucciones devueltas. Los pasos de una ruta se pueden recuperar con el método Route.getStep(i:Number).
Los objetos Route almacenan el número de pasos para una ruta (de tipo Step), el código geográfico de inicio y fin de la ruta y otros datos procesados, como la distancia, la duración y la latitud y longitud exacta del punto final de la ruta (que puede ser distinto del código geográfico existente si el código no se encuentra en un segmento de carretera). Cada objeto Step también contiene la descripción del texto (por ejemplo: "Incorporación a US-101 S desde la salida a San José"), así como información procesada que incluye la distancia, la duración y los valores exactos de latitud y longitud.
Puedes utilizar la información textual devuelta por el objeto Directions para visualizar descripciones textuales detalladas en cualquier objeto de visualización (DisplayObject). En el siguiente ejemplo, mostramos instrucciones detalladas en un objeto <mx:Text>. El siguiente código de ejemplo muestra cómo extraer información de ruta y pasos de un objeto Directions.
private var map:Map;
private var dir:Directions;
private var turnCounter:uint = 0;
private function onMapReady(event:MapEvent):void {
map.setCenter(new LatLng(41.651505,-72.094455), 8, MapType.NORMAL_MAP_TYPE);
dir = new Directions();
dir.addEventListener(DirectionsEvent.DIRECTIONS_SUCCESS, onDirLoad);
dir.addEventListener(DirectionsEvent.DIRECTIONS_FAILURE, onDirFail);
}
private function onDirFail(event:DirectionsEvent):void {
Alert.show("Status: " + event.directions.status);
step.htmlText = "";
}
private function onDirLoad(event:DirectionsEvent):void {
var dir:Directions = event.directions;
var startMarker:Marker;
var endMarker:Marker;
map.clearOverlays();
map.addOverlay(dir.createPolyline());
map.setZoom(map.getBoundsZoomLevel(dir.bounds));
map.setCenter(dir.bounds.getCenter());
startMarker = new Marker(dir.getRoute(0).startGeocode.point, new MarkerOptions({fillStyle: {color:Color.GREEN}}));
endMarker = new Marker(dir.getRoute(0).endGeocode.point, new MarkerOptions({fillStyle: {color:Color.BLUE}}));
map.addOverlay(startMarker);
map.addOverlay(endMarker);
}
private function processTurnByTurn():void {
var stepText:String;
var stepMarker:Marker;
turnCounter++;
if (turnCounter <= dir.getRoute(0).numSteps) {
stepText = dir.getRoute(0).getStep(turnCounter-1).descriptionHtml;
stepMarker = new Marker(dir.getRoute(0).getStep(turnCounter-1).latLng, new MarkerOptions({label: turnCounter.toString()}));
map.addOverlay(stepMarker);
step.htmlText = "Step " + turnCounter + ": " + stepText;
} else {
getTurnByTurnDirections.enabled = false;
step.htmlText = "Arrive at " + to.text + " : " + dir.getRoute(0).summaryHtml;
}
}
Ver ejemplo (DirectionsAdvanced.html)
Ver código ActionScript (DirectionsAdvanced.mxml)
Para consultar la documentación completa sobre los distintos objetos, métodos y eventos del paquete de rutas de el API, consulta las Referencias para el API de Google Maps.