Aufgabenstellung
In eine Flex-Anwendung soll Google Maps integriert werden.
Ansatz
1.) Aufruf der Seite http://code.google.com/intl/de/apis/maps/documentation/flash/
2.) Runterladen der Flash-Bibliothek (SWC-Datei) und einfügen in das LIBS-Verzeichnis der Flex-Anwendung
3.) Anfordern des Schlüssels unter „Wie beginne ich…“ und eintragen in den Code unten.
Lösung
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
<mx:Script>
<![CDATA[
import com.google.maps.overlays.Marker;
import com.google.maps.controls.ZoomControl;
import com.google.maps.geom.Attitude;
import mx.controls.Alert;
import com.google.maps.*;
import com.google.maps.geom.*;
import com.google.maps.services.GeocodingEvent;
import com.google.maps.services.ClientGeocoder;
import com.google.maps.controls.NavigationControl;
import com.google.maps.controls.MapTypeControl;
import com.google.maps.MapEvent;
public function onMapReady(event:MapEvent):void
{
// Die Bedienelemente der Karte hinzufügen
map.addControl(new MapTypeControl());
map.addControl(new NavigationControl());
this.geocodeLocation('Fulda, Am Rinnweg 15');
}
public function onMapPreinitialize(event:MapEvent):void
{
var myMapOptions:MapOptions = new MapOptions();
myMapOptions.viewMode = View.VIEWMODE_2D;
myMapOptions.mapType=MapType.NORMAL_MAP_TYPE;
//myMapOptions.zoom=0;
map.setInitOptions(myMapOptions);
}
private function geocodeLocation(location:String=''):void
{
var geocoder:ClientGeocoder = new ClientGeocoder();
geocoder.addEventListener(GeocodingEvent.GEOCODING_SUCCESS,
geoCodeSuccess);
geocoder.addEventListener(GeocodingEvent.GEOCODING_FAILURE,
geoCodeFailure);
if(location!='')
{
geocoder.geocode(location);
}
else
{
geocoder.geocode(search.text);
}
}
private function geoCodeSuccess(event:GeocodingEvent):void
{
var placemarks:Array = event.response.placemarks;
map.flyTo(placemarks[0].point, 18, new Attitude(35,60,35),
3);
var marker:Marker = new Marker(placemarks[0].point);
map.addOverlay(marker);
}
private function geoCodeFailure(event:GeocodingEvent):void
{
Alert.show('Also wissense, das find ich einfach ned....',
'Ähm...');
}
]]>
</mx:Script>
<mx:TitleWindow layout="vertical" width="100%" height="100%"
title="Finde versteckte Schätze...
(c) die 1st-level-caches Schludi&Mephi ">
<maps:Map3D xmlns:maps="com.google.maps.*"
id="map"
mapevent_mapready="onMapReady(event)"
mapevent_mappreinitialize="onMapPreinitialize(event)"
width="100%"
height="100%"
key="HIER KOMMT DER BEANTRAGTE GOOGLE KEY REIN"/>
<mx:HBox horizontalAlign="center" width="100%" height="30">
<mx:Label x="70" y="524" text="Da will ich hin:"
width="120" fontWeight="bold"/>
<mx:Button x="421" y="520" label="Suchen ..."
click="{geocodeLocation()}"/>
<mx:TextInput id="search" x="167" y="520"
width="246"/>
</mx:HBox>
</mx:TitleWindow>
</mx:Application>
Beispiel
http://baugebiete.fulda.de