Page 1

Tobias Richling

Bing Maps f端r Webentwickler schnell+kompakt

Bing Maps f端r Webentwickler - Leseprobe


Tobias Richling Bing Maps für Webentwickler schnell+kompakt ISBN: 978-3-86802-037-3

© 2009 entwickler.press ein Imprint der Software & Support Verlag GmbH

http://www.entwickler-press.de http://www.software-support.biz Ihr Kontakt zum Verlag und Lektorat: lektorat@entwickler-press.de Bibliografische Information Der Deutschen Bibliothek Die Deutsche Bibliothek verzeichnet diese Publikation in der Deutschen Nationalbibliografie; detaillierte bibliografische Daten sind im Internet über http://dnb.ddb.de abrufbar.

Lektorat: Sebastian Burkart, sburkart@entwickler-press.de Korrektorat: Katharina Klassen Satz: Sebastian Burkart Umschlaggestaltung: Maria Rudi Belichtung, Druck und Bindung: M.P. Media-Print Informationstechnologie GmbH, Paderborn. Alle Rechte, auch für Übersetzungen, sind vorbehalten. Reproduktion jeglicher Art (Fotokopie, Nachdruck, Mikrofilm, Erfassung auf elektronischen Datenträgern oder andere Verfahren) nur mit schriftlicher Genehmigung des Verlags. Jegliche Haftung für die Richtigkeit des gesamten Werks kann, trotz sorgfältiger Prüfung durch Autor und Verlag, nicht übernommen werden. Die im Buch genannten Produkte, Warenzeichen und Firmennamen sind in der Regel durch deren Inhaber geschützt.

Bing Maps für Webentwickler - Leseprobe


  Inhaltsverzeichnis

Inhaltsverzeichnis Inhaltsverzeichnis

5

Vorwort Aufbau des Buchs Voraussetzungen und Zielgruppe Danksagungen

7 8 9 9

Kapitel 1: Grundlagen und Installation 1.1 Grundlagen von Bing Maps 1.2 Download und Installation 1.3 Hilfreiche Links

11 11 12 14

Kapitel 2: Grundlagen des Karten-API 2.1 Ein erstes Kartenprojekt 2.2 Instanziierung und Zugriff auf die Karte 2.3 Anpassen der Karte 2.4 Mit der Karte interagieren 2.5 Beispiel: Ermitteln von Geokoordinaten

15 15 17 21 24 27

Kapitel 3: Das Karten-API  3.1 Markierungen setzen 3.2 Geocoding 3.3 Suchen 3.4 Routing

33 33 43 45 55

schnell und kompakt

5

Bing Maps fĂźr Webentwickler - Leseprobe


  Inhaltsverzeichnis

Kapitel 4: Grundlagen des Service API  4.1 Architektur des Bing Maps Web Service SDK 4.2 Registrieren eines Entwickleraccounts 4.3 Erstellung der Dienst-Proxies 4.4 Zugriff auf den Tokendienst

63 64 70 72 75

Kapitel 5: Das Web Services API  5.1 Geocoding 5.2 Imaging 5.3 Suche 5.4 Routing

81 81 86 92 101

Kapitel 6: Fallbeispiele und Anwendungen 6.1 Fall 1: Entfernungsmessung zwischen Pushpins 6.2 Fall 2: POI-Suche in Windows Forms

111 111 127

Stichwortverzeichnis

141

6

Bing Maps fĂźr Webentwickler - Leseprobe


Vorwort Die computergestützte Verarbeitung von geografischen Daten ist ein breites Feld mit vielen Anwendungsmöglichkeiten. An vielen Stellen haben sich Anwendungsfälle bereits in den Alltag eingeschlichen, angefangen von Routenplanung im Internet bis hin zu Navigationssystemen, die mittlerweile in vielen Varianten, zum Beispiel in Handys, existieren und in vielen Autos unterwegs sind. Aber auch im geschäftlichen Umfeld haben Lösungen zur Verarbeitung von Geodaten eine Berechtigung. Hier reicht das Spektrum von der Visualisierung von Kennzahlen im BI-Bereich bis hin zu Software für Speditionen, die vielfältig von dem Einsatz von Kartenwerken profitieren. Ganz allgemein rückt das Internet mit Web 2.0 näher an die Benutzer und an die reale Welt heran. Soziale Netzwerke und Dienste, die den Menschen in den Mittelpunkt rücken, erfreuen sich großer Beliebtheit. Durch diese Zentrierung auf den Nutzer wird die Wahrnehmung der realen Welt für den Computer wichtiger, um die Probleme und Aufgaben zu lösen, die einem Anwender Nutzen bringen. Genügend gute Gründe also, um sich mit der Integration von Kartenwerken und Geodaten in den eigenen Anwendungen zu beschäftigen. Doch wo fängt man an? Wie erlangt man Zugriff auf Daten und Dienste zur Verwendung in eigenen Anwendungen? Bedenkt man das Potenzial der Anwendungsform, könnte man einen hohen Entwicklungsaufwand erwarten. Das vorliegende Buch hat es sich zur Aufgabe gemacht, diese Befürchtungen zu zerstreuen und Ihnen einen Einstieg in die schnell und kompakt

Bing Maps für Webentwickler - Leseprobe

7


Vorwort

Verwendung von Karten und den damit verwandten Diensten in Ihren Anwendungen zu erleichtern. Der Umfang des Buches ist dabei bewusst kompakt gehalten, um einen schnellen Einstieg zu ermöglichen.

Aufbau des Buchs Technologisch liegt der Schwerpunkt des Buches auf dem Kartenwerk „Bing Maps for Enterprise“ von Microsoft. Die Begriffe „Bing Maps for Enterprise“ und „Bing Maps“ sind im Folgenden synonym zu verstehen. Es besteht aus zwei wesentlichen Blöcken, einem Karten-API und einem Web Service API, denen jeweils einzelne Kapitel gewidmet sind. Im Einzelnen erwartet Sie Folgendes: ƒƒ Kapitel 1 vermittelt grundlegendes Wissen über die benötigten Werkzeuge und deren Installation. ƒƒ Kapitel 2 zeigt beispielhaft die Verwendung von Karten in einer ersten Webanwendung. Es werden Techniken vorgestellt, wie die Eigenschaften der Karte verändert und auf Benutzereingaben reagiert werden kann. ƒƒ Kapitel 3 widmet sich dem Karten-API, das sowohl in einer clientseitigen JavaScript-Variante als auch in einer serverseitigen ASP.NET-Variante existiert. ƒƒ Kapitel 4 schlägt die Brücke zum Web Service API von Bing Maps. Während das Map-API immer mit dem Kartensteuerelement gekoppelt ist, wird hier erläutert, was notwendig ist, damit man die Web Services von Bing Maps nutzen kann. ƒƒ Kapitel 5 beschreibt die vier Dienste, die das Web Service API bilden, und gibt Beispiele für deren Nutzung. ƒƒ Kapitel 6 beschäftigt sich mit einigen komplexeren Beispielen zur Nutzung der vorgestellten Technologien. Im Zuge dieser Betrachtung werden einige weiterführende Ansätze erläutert. 8

Bing Maps für Webentwickler - Leseprobe


Voraussetzungen und Zielgruppe 

Außerdem wird kurz auf ein Kartensteuerelement für Silverlight eingegangen.

Voraussetzungen und Zielgruppe Die Zielgruppe für dieses Buch sind alle, die sich einen schnellen Überblick über die Fähigkeiten von Bing Maps verschaffen wollen. In erster Linie richtet sich das Buch an Entwickler, die kartenbasierte Anwendungen erstellen möchten. Da das Buch eine Microsoft-Technologie beschreibt, sind Kenntnisse im Umgang mit Visual Studio hilfreich. Zum ausprobieren der Beispiele ist ein entsprechendes Entwicklungswerkzeug erforderlich.

Danksagungen Ohne Hilfe wäre dieses Buch nicht möglich gewesen, damit gilt mein Dank meiner Frau Judith dafür, dass sie sich Seite für Seite fachfremd durch dieses Buch gelesen hat und dabei gnadenlos mit Rechtschreib- und Grammatikfehlern aufgeräumt hat. Kritik und Anregungen zu diesem Buch nehme ich gerne entgegen. Sie können mir diese unter trichling@gmx.de hinterlassen. Auch wenn noch Fragen offen geblieben sind, können Sie sich gerne an diese Adresse wenden. Ich wünsche Ihnen viel Spaß beim Lesen dieses Buches und mit Bing Maps. Tobias Richling Juni 2009

schnell und kompakt

Bing Maps für Webentwickler - Leseprobe

9


Bing Maps f端r Webentwickler - Leseprobe


KAPITEL 2

Grundlagen des Karten-API 2.1 Ein erstes Kartenprojekt

15

2.2 Instanziierung und Zugriff auf die Karte

17

2.3 Anpassen der Karte

21

2.4 Mit der Karte interagieren

24

2.5 Beispiel: Ermitteln von Geokoordinaten

27

2.1 Ein erstes Kartenprojekt Um zu testen, ob das Kartensteuerelement verwendet werden kann, legt man eine neue ASP.NET-Webanwendung an und wechselt auf die Entwurfsansicht der Seite Default.aspx. In der Toolbar sollte eine Gruppe „Virtual Earth“ zu finden sein. Diese enthält diverse Steuerelemente, von denen „Map“ das Zentrale ist. Dieses kann man nun einfach auf die Entwurfsansicht ziehen, was bereits zu einer Entwurfsanzeige der Karte führt. Wer bereits übermütig auf die F5-Taste gedrückt hat, um das Ganze zu testen, wird enttäuscht: Da es sich bei der Karte um ein AJAX-Steuerelement handelt, wird auf der Seite, die es verwendet, noch ein ScriptManager-Steuerelement benötigt. Dieses sollte, gemäß den allgemeinen Richtlinien für AJAX-Steuerelemente, als erstes Element innerhalb des Formulars erscheinen. Der ScriptManager ist in der Toolbox-Gruppe „AJAX-Erweiterungen“ zu finden, die ab .NET 3.5 Bestandteil des .NET Framework sind.

schnell und kompakt

Bing Maps für Webentwickler - Leseprobe

15


Grundlagen des Karten-API

Abbildung 2.1: Bing-Maps-ASP.NET-Steuerelemente

HINWEIS Falls Sie eine ältere Visual-Studio-Version verwenden, können Sie die AJAX-Extension unter folgendem URL herunterladen: http://www.asp.net/AJAX/downloads/

Durch das Platzieren der Karte auf der Entwurfsansicht wird automatisch der Code aus Listing 2.1 in die aspx-Datei aufgenommen. <%@ Register Assembly="Microsoft.Live.ServerControls.VE" Namespace="Microsoft.Live.ServerControls.VE" TagPrefix="ve" %>

Listing 2.1: Registrierung der Bing-Maps-Steuerelemente in der ASP.NET-Seite

16

Bing Maps für Webentwickler - Leseprobe


2.2 Instanziierung und Zugriff auf die Karte 

Zusammen mit dem ScriptManager ergibt sich für die Seite der Code, wie er in Listing 2.2 gezeigt wird. <form id="form1" runat="server"> <asp:ScriptManager ID="ScriptManager1" runat="server" /> <ve:Map ID="Map1" runat="server" /> </form>

Listing 2.2: Grundgerüst einer ASP.NET-Seite mit Karte

Wenn man diese Anwendung nun startet, wird man endlich mit der erhofften Kartendarstellung belohnt. Der sichtbare Kartenausschnitt kann mithilfe der Maus bei gedrückter linker Maustaste verschoben werden. Über die Steuerelemente in der oberen linken Ecke der Karte kann der Zoom verändert werden, der Kartenausschnitt verschoben werden sowie zwischen verschiedenen Kartenansichten umgeschaltet werden. HINWEIS Um zur 3D-Ansicht zu wechseln, muss eine zusätliche Software installiert werden. Klickt man auf den 3D-Button, so erscheint ein Popup mit einem Hinweis und der Download des Installers startet.

2.2 Instanziierung und Zugriff auf die Karte Zur Instanziierung der Karte gibt es zwei Möglichkeiten: Die Karte kann mithilfe des ASP.NET-Serversteuerlements über das Tag <ve:Map> in eine ASPX-Seite eingefügt werden, wie es im vorausgehenden Abschnitt gezeigt wurde. Diese Zugriffsvariante setzt die Installation der Live Tools voraus. Die zweite Möglichkeit ist eine reine JavaScript-Instanziierung. Hierbei ist keine Installation nötig.

schnell und kompakt

Bing Maps für Webentwickler - Leseprobe

17


Grundlagen des Karten-API

Die Art der Instanziierung beeinflusst die Zugriffsmöglichkeiten auf die Karte. Bei Verwendung des Serversteuerelements wird die Karte deklarativ über ein Tag definiert. Dementsprechend können viele Eigenschaften der Karte natürlich auch deklarativ gesetzt werden. Ein Zugriff im Code-behind über C# oder VB.NET ist ebenfalls möglich, wie man es von ASP.NET her kennt: Die Karte steht einfach als Objekt zur Verfügung. Das Serversteuerelement sorgt dafür, das entsprechendes HTML zum Client gerendert wird. Und da es sich um ein AJAX-lastiges Steuerelement handelt, landet beim Client auch noch eine große Portion JavaScript-Code. Die Verwendung des Serversteuerelements schließt einen clientseitigen JavaScript-Zugriff auf die Karte nicht aus. Die Karte lebt bei diesem Ansatz sozusagen in zwei Welten. Bei der reinen JavaScript-Instanziierung ist deklarativer und kein serverseitiger Zugriff im Code-behind auf die Karte möglich. In diesem Fall funktioniert der Zugriff ausschließlich über JavaScript. Die möglichen Varianten des Zugriffs werden in den folgenden Abschnitten beschrieben. In Tabelle 2.1 sind diese noch einmal übersichtlich dargestellt. Instanziierung Zugriff

ASP.NET-Serversteuerelement

JavaScript

Deklarativ Code-behind JavaScript

Tabelle 2.1: Instanziierungs- und Zugriffsmöglichkeiten auf die Karte

18

Bing Maps für Webentwickler - Leseprobe


2.2 Instanziierung und Zugriff auf die Karte 

Zugriff deklarativ und per Code-behind

Diese beiden Zugriffsformen stehen nur zur Verfügung, wenn die Karte über das ASP.NET-Serversteuerelement instanziiert wurde. Deklarativ erfolgt der Zugriff über Attribute im <ve:Map>-Tag. Um die Zoomstufe der Karte einzustellen, schreibt man Folgendes: <ve:Map ID="Map1" runat="server" ZoomLevel=5 />

Um das gleiche im Code-behind mit C# zu erreichen, ist folgender Code erforderlich: this.Map1.ZoomLevel = 5;

Zugriff per JavaScript auf das ASP.NET-Serversteuerelement

Wird die Karte in der ASPX-Seite durch ein Tag für das Serversteuerelement definiert, führt das dazu, dass die entsprechenden HTML-Container von dem Steuerelement gerendert werden. Um sich Zugriff auf die Karte zu verschaffen, benötigt man die clientseitig vergebene ID des Steuerelements. Diese wird in den meisten Fällen mit der im APSX definierten ID übereinstimmen. In bestimmten Fällen ändert ASP.NET aber diese ID, um Mehrdeutigkeiten (z. B. bei der Verwendung von Repeatern) zu vermeiden. Um auf Nummer sicher zu gehen, erhält man die LaufzeitClientID mit folgendem JavaScript-Code: var cMapControlID = '<% =Map1.ClientID %>';

schnell und kompakt

Bing Maps für Webentwickler - Leseprobe

19


Grundlagen des Karten-API PROFITIPP Die Eigenschaft ClientID eines Serversteuerelements gibt die zur Laufzeit im Client verwendete ID des zugehörigen HTML-Elements zurück. Diese muss nicht zwangsläufig mit der serverseitigten ID übereinstimmen.

Der Name Map1 bezieht sich dabei auf den serverseitigen Namen des Kartensteuerelements. Mithilfe dieser ID kann man sich nun eine Referenz auf die Karte organisieren. Hierbei kommt das AJAX-API von Microsoft zur Hilfe: var map = $find(cMapControlID).get_VEMap();

Die Schnellzugriffsmethode $find findet die Referenz auf die Kartenkomponente. Um das darin enthaltene VEMap-Objekt zu bekommen, muss noch die Methode get_VEMap aufgerufen werden. Nun kann mit der Variable map genau so gearbeitet werden, als wäre die Karte direkt per JavaScript instanziiert worden. Zugriff per JavaScript auf die per JavaScript instanziierte Karte

Verwendet man die reine JavaScript-Instanziierung, muss man die JavaScript-Bibliothek der Karte manuell einbinden, was das Serversteuerelement für uns übernommen hat. Ein Zugriff auf die Karte per JavaScript ist dann natürlich möglich – ebenso natürlich scheidet ein serverseitiger Code-behind-Zugriff auf die Karte aber aus. In diesem Szenario „lebt“ die Karte ausschließlich auf der Clientseite. Den Code zur Erstellung der Karte per JavaScript zeigt Listing 2.3. <head> // JavaScript API einbinden <script type="text/javascript" src=http://ecn.dev. virtualearth.nt/mapcontrol/mapcontrol.ashx?v=6.2 /> 20

Bing Maps für Webentwickler - Leseprobe


2.3 Anpassen der Karte  var map = null; // Globale Variable function GetMap() { // Karte instanziieren map = new VEMap(‘myMap’); // Karte laden map.LoadMap(); } </head> <body onload=”GetMap();”> <div id=”myMap” /> </body>

Listing 2.3: Zugriff auf die Karte per JavaScript

Zunächst wird die JavaScript-Bibliothek für die Karte eingebunden. Die Variable map bietet später allen Funktionen Zugriff auf die Karte. Die Funktion GetMap wird beim OnLoad-Ereignis des Body ausgeführt. Der Konstruktor der VEMap-Klasse erwartet als Parameter den Namen eines Container-Tags, in diesem Beispiel ein div, in dem die Karte platziert wird. Der Aufruf map.LoadMap() lädt die Karte und bringt sie zur Anzeige. Die Einstellung der Zoomstufe lässt sich per JavaScript folgendermaßen realisieren: map.SetZoomLevel(5);

2.3 Anpassen der Karte Nachdem die Möglichkeiten zur Erstellung der Karte erörtert wurden, möchte man die Karte gern möglichst den eigenen Vorstellungen anpassen. Das kann zum Beispiel bedeuten, die Steuerelementleiste auszublenden, einen Zoomlevel einzustellen oder einen bestimmten Startpunkt für die Karte festzulegen. Außerdem

schnell und kompakt

Bing Maps für Webentwickler - Leseprobe

21


Grundlagen des Karten-API

können zu den standardmäßig sichtbaren Elementen weitere eingeblendet werden, zum Beispiel eine Miniaturkarte. Die Eigenschaften der Karte können wiederum in Abhängigkeit von der Art der Instanziierung entweder deklarativ, im Codebehind oder per JavaScript gesetzt werden (Tabelle 2.1). Im Folgenden werden zunächst einige deklarative Einstellungen vorgestellt. Die Übertragung auf die client- und serverseitige Implementierung folgt später. Zur Ausblendung der Standardsteuerelementleiste dient die Dashboard-Eigenschaft, mit der DashboardSize-Eigenschaft kann die Größe der Steuerleiste auf groß, mittel oder klein festgelegt werden. Mithilfe der Eigenschaft ShowMapModeSwitch kann man die 2D-/3D-Buttons von der Steuerleiste verschwinden lassen. Mittels MapMode lässt sich die Perspektive einstellen, die MapStyle-Eigenschaft hingegen schaltet zwischen den Anzeigemodi Road, Aerial usw. der Karte um. Zum Festlegen der initialen Kartenposition kann man die Eigenschaften Center-Latitude und Center-Longitude verwenden. In Tabelle 2.2 sind die oben beschriebenen sowie einige weitere Eigenschaften des Kartensteuerelements noch einmal zusammengefasst. Die Tabelle listet allerdings nur die wichtigsten der verfügbaren Eigenschaften auf. Eigenschaft

Mögliche Werte

Beschreibung

Dashboard

True/False

Blendet die Steuerelementleiste ein oder aus.

DashboardSize

Normal/Small/Tiny

Steuert die Größe der Steuerelementleiste.

ShowMapModeSwitch

True/False

Blendet die 2D-/3D-Buttons ein/aus.

22

Bing Maps für Webentwickler - Leseprobe


2.3 Anpassen der Karte  MapMode

2D/3D

Stellt die Kartenperspektive ein.

MapStyle

Road/Aerial/Birdseye …

Stellt die Kartendarstellung ein.

Center-Latitude/ Center-Longitude

Numerisch

Stellt den Kartenmittelpunkt ein.

ZoomLevel

1 – 19

Stellt die Vergrößerung ein.

FixedMap

True/False

Legt fest, ob der Kartenausschnitt verschoben werden kann.

MiniMap

True/False

Blendet die Miniaturkarte ein/aus.

ScaleBarDistanceUnit

Miles/Kilometers

Zeigt den Maßstab in Meilen/Kilometern an.

Locale

NA, en_us, de_de, u.a.

Stellt die Kartensprache ein.

Tabelle 2.2: Eigenschaften des Kartensteuerelements

Die entsprechenden Eigenschaften programmatisch im Code-behind zu setzen, ist denkbar einfach, da die Eigenschaftsnamen in der Tabelle mit den zu verwendenden Namen weitgehend übereinstimmen. Um die Größe der Steuerelementleiste einzustellen, schreibt man Folgendes: this.Map1.DashboardSize = DashboardSize.Small;

Die DashboardSize-Aufzählung ist, wie die anderen Klassen, im Namensraum Microsoft.Live.ServerControls.VE untergebracht. Eine Ausnahme in der Benennung bildet beispielsweise die Center-Eigenschaft. Diese ist auf ein Objekt des Type LatLong festzulegen: this.Map1.Center = new LatLong(40, -104);

schnell und kompakt

Bing Maps für Webentwickler - Leseprobe

23


Grundlagen des Karten-API

Um per JavaScript die Eigenschaften der Karte zu setzen, kann man sich wieder an den Namen aus der Tabelle orientieren. Allerdings muss beachtet werden, dass es in der JavaScript-Implementierung keine Properties im Sinne der .NET-Implementierung gibt. Stattdessen stellt man dem Namen der Eigenschaft ein Get oder Set voran und verwendet die Schreibweise eines Methodenaufrufs: map.SetMapStyle(VEMapStyle.Aerial); alert(map.GetMapStyle());

2.4 Mit der Karte interagieren Bisher wurde das statische Erscheinungsbild der Karte angepasst, nun soll es ein wenig interaktiver werden. Nachfolgend sollen grundlegende Dinge im Umgang mit der Karte beschrieben werden, dazu gehört das Reagieren auf Ereignisse der Karte, das Umwandeln von Mauskoordinaten in Geokoordinaten und das Setzen von Markierungen auf der Karte. Einige Erkenntnisse aus den folgenden Ausführungen finden sich noch einmal thematisch gegliedert in Kapitel 3 „Das Karten-API“ wieder. Die meisten Dinge lassen sich wiederum sowohl serverseitig als auch clientseitig verarbeiten. In Kapitel 3 werden methodisch jeweils beide Wege beleuchtet. Hier wird zunächst nur der Weg gewählt, der im Sinne des Beispiels am sinnvollsten erscheint. Zur Interaktion mit der Karte löst diese bestimmte Ereignisse aus, auf die der Entwickler reagieren kann.

24

Bing Maps für Webentwickler - Leseprobe


2.4 Mit der Karte interagieren 

Reaktion auf Ereignisse des ASP.NET-Serversteuerelements

Die Ereignisse, die auf der Serverseite ausgelöst werden, werden in der IntelliSense-Liste des Kartensteuerelements in der von Visual Studio bekannten „Blitz“-Darstellung angezeigt. Diese beginnen mit dem Präfix OnServer, gefolgt von dem Ereignisnamen. Das Ereignis OnServerClick wird beispielsweise bei einem Mausklick auf die Karte gefeuert. Die JavaScript-Ereignisse, die auf dem Client verarbeitet werden, kann man ebenfalls in der IntelliSense-Liste finden. Diese sind mit einem blauen Symbol versehen und beginnen mit dem Präfix OnClient gefolgt von dem Ereignissnamen. Das OnClientMouseMove-Ereignis wird bei jeder Mausbewegung auf der Karte ausgelöst. Die JavaScript-Ereignis-Handler bekommen ähnlich wie die serverseitigen Routinen den jeweiligen Auslöser des Ereignisses (sender) und einen Satz an Ereignisinformationen (e). Anders als auf der Serverseite enthält der Parameter e jedoch nicht direkt die gewünschten Informationen. Es muss zunächst die Methode get_MapEvent() aufgerufen werden, um an die relevanten Informationen zu gelangen. HINWEIS Die interessanten, d. h. die Karte betreffenden Ereignisinformationen sind nicht direkt im Paramter e zu finden, sondern im Ergebnis des Aufrufs e.get_MapEvent().

Das so gewonnene Objekt ist für die meisten Ereignisse identisch und enthält Informationen über die aktuelle Mausposition in Bildschirm- oder Kartenkoordinaten sowie über gedrückte Steuerungstasten und Maustasten.

schnell und kompakt

Bing Maps für Webentwickler - Leseprobe

25


Grundlagen des Karten-API

Für das MouseMove-Ereignis sieht das zum Beispiel wie in Listing 2.4 aus. function Map1_ClientMouseMove(sender, e) //Ereignisinformationen lesen var args = e.get_MapEvent(); }

Listing 2.4: Clientseitiger Ereignis-Handler für das ASP.NET-Kartensteuerelement

Reaktion auf Ereignisse der JavaScript-Karte

Eine dritte Möglichkeit, auf Ereignisse der Karte zu reagieren, kommt ganz ohne das ASP.NET-Kartensteuerelement aus. Wenn die Karte, wie in allen Beispielen in Microsofts Interactive SDK, rein über JavaScript angesprochen wird. Dieser Weg führt über die AttachEvent-Methode der map-Instanz in JavaScript. Diese Methode bekommt zwei Parameter: den Namen des Events als String und die Funktion, die das Ereignis behandeln soll. Der Ereignisname stimmt mit den Namen der Clientereignisse überein, die im Serversteuerelement verwendet werden, jedoch ohne Client nach dem On: map.AttachEvent("onmousemove", MouseMove); map.AttachEvent("onmousedown", MouseDown); map.AttachEvent("onmouseup", MouseUp);

Die Funktion, die als Ereignis-Handler angegeben ist, bekommt einen Parameter übergeben, nämlich den Ereignisparameter. Ein separater Aufruf von get_MapEvent() ist in diesem Fall nicht erforderlich.

26

Bing Maps für Webentwickler - Leseprobe


2.5 Beispiel: Ermitteln von Geokoordinaten  function MouseDown(args) { if (args.rightMouseButton) { // rechte Maustaste gedrückt } }

Listing 2.5: JavaScript-Ereignis-Handler

2.5 Beispiel: Ermitteln von Geokoordinaten Listing 2.6 verwendet die Instanziierungsmethode über das ASP. NET-Serversteuerelement. Diese Variante ist in den meisten Fällen empfehlenswert, denn sie ermöglicht sowohl den Zugriff auf die Karte per Code-behind als auch per JavaScript und bietet somit größtmögliche Flexibilität. Das OnClientMouseMove-Ereignis eignet sich zum Beispiel dazu, die Geokoordinaten der aktuellen Mauszeigerposition zu ermitteln. Damit nicht bei jeder minimalen Mausbewegung ein Postback passiert, nimmt man auch am besten das clientseitige Ereignis. Das wird mit einem JavaScript EventHandler namens Map1_ClientMouseMove verbunden. Dann benötigt man auf der Seite zwei Labels, in die die Koordinaten geschrieben werden. Diese können entweder einfach durch zwei Span-Tags oder durch ein <asp:Label>-Serversteuerelement realisiert werden, da diese ebenfalls als Span gerendert werden. <asp:scriptmanager runat="server"/> <ve:Map ID="Map1" runat="server" OnClientMouseMove="Map1_ClientMouseMove" /> <br /> <asp:Label runat="server" ID="lblLat" Name="lblLat" Text="XKoord" /> <br />

Ende der Leseprobe schnell und kompakt Ende der Leseprobe - Mehr unter www.entwickler-press.de

27


Stichwortverzeichnis

Stichwortverzeichnis A Anpassen der Karte 21 Anwendungsfall Luftliniendistanz 111 POI-Suche 127 Anwendungsfall 1 Erweiterungsmöglichkeiten 126 B Bing-Web-Services Architektur 64 Bild anfordern 132 Entwickleraccount 70 Geocoding 81 Imaging 86 Proxies erstellen 72 Request 68 Response 69 Suche 92 Suchen 129 Token anfordern 77 Tokendienst 75 URLs 73 Bogenmaß 114 JavaScript 116

schnell und kompakt

141


Stichwortverzeichnis

C Clientseitige Suche 53 D Distanzberechnung 112 E Einfache Suche 47 Ereignisse JavaScript 26 serverseitig 25 G GeocodeRequest 67, 82 GeocodeResponse 83, 85 Geocoding 43, 67, 81 GeocodeRequest 82 GeocodeResponse 83 ReverseGeocodeRequest 85 umgekehrt 44, 85, 136 Geokoordinaten 43 bestimmen 29 Entfernung 112 Entfernungsberechnung 116 I ImageryMetadataRequest 90 ImageryMetadataResponse 91 ImageryService 132 Pushpins einfügen 134 Imaging 86 Bild anfordern 87 ImageryMetadataRequest 90

142


Stichwortverzeichnis

ImagingMetadataResponse 91 MapUriRequest 87 MapUriResponse 88 Metadaten anfordern 90 Interaktion mit der Karte 24 ItineraryItem 106 K Karte laden (JavaScript) 118 Kartensteuerelement Download 12 Eigenschaften 21 Instanziierungsmöglichkeiten 18 JavaScript Ereignisse 26 Serverereignisse 25 Verwendung 15 Zugriff per JavaScript 19 Kartenwerk 11 Komplexe Suche 48 L Linien, siehe Shapes Links Bing Web Service URLs 73 Interactive SDK 14 MSDN 14 LiveTools Download 12 Installation 13 M MapUriRequest 87 MapUriResponse 88 schnell und kompakt

143


Stichwortverzeichnis

Markierungen, siehe Shapes Mauskoordinaten Umrechnung 124 P Polygone,siehe Shapes Produktivumgebung 65 Pushpins, siehe Shapes  anpassen 36 verschieben 121 Pushpins setzen setzen, JavaScript 119 R Request 66 RequestBase 68 Response 66 ResponseBase 68 ReverseGeocodeRequest 85 Route berechnen 56 darstellen 57 mehrere Wegpunkte 105 Navigationsanweisung 106 serverseitige Darstellung 62 Routen berechnen 11 RouteRequest 103 RouteResponse 104 Routing 55 clientseitig 55 ItineraryItem 106

144


Stichwortverzeichnis

Optionen 58 RouteLeg 105 RouteRequest 103 RouteResponse 104 serverseitig 59 wichtige Straßen 108 S SearchRequest 94 SearchResponse 94 Serverseitige Suche 50 ShapeLayer 41 Shapes Ereignisse 42 Mittelpunkt 131 Organisieren 41 Polygone 38 PolyLine 38 Pushpins 34 setzen 33 Staging-Umgebung 65 Suche clientseitig 53 einfach 47, 97 Filter 99 komplexe 48 mit Bedingungen 99 per Web Service 92 POIs 46 SearchRequest 94 SearchResponse 94 serverseitig 50

schnell und kompakt

145


Stichwortverzeichnis

verknüpfte Bedingungen 100 verknüpfte Filter 100 T Token 69, 133 anfordern 77 Hilfsklasse 78 Tokendienst 75, 64 Tokenspezifikation 79 U Umgekehrtes Geocoding 44 W Wcf Services 63 Web Service API 12 Web Service Account erstellen 70 Web Services 63, siehe auch Bing Web Services Webverweis hinzufügen 76

146

Bing Maps für Webentwickler  

Bing Maps für Webentwickler

Read more
Read more
Similar to
Popular now
Just for you