Als dritten und vorerst letzten Teil der Serie über Virtual Earth und die Windows Live Tools CTP gibt es noch eine nützliche Kleinigkeit, die ich euch nicht vorenthalten will:
Positionsbestimmung per Zentrum der ausgewählten Karte.

Wir integrieren eine Standard Virtual Earth Karte mit Hilfe der Windows Live Tools, überlassen dem User die freie Wahl des Kartenzentrums über die Standard-Navigation der Karte und setzen auf Button-Click einen Pushpin, oder Stecknadel, ins Kartenzentrum, dessen Eigenschaften wir so angepasst haben, dass als Beschreibung die aktuellen Koordinaten des Pushpins angezeigt werden.

Wie in den bisherigen Codeclips auch sind dafür nur wenige Zeilen Code notwendig.

Default.aspx:

   1: <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebApplication12._Default" %>
   2:  
   3: <%@ Register Assembly="Microsoft.Live.ServerControls.VE" Namespace="Microsoft.Live.ServerControls.VE"
   4:     TagPrefix="ve" %>
   5:  
   6: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
   7:  
   8: <html xmlns="http://www.w3.org/1999/xhtml" >
   9: <head runat="server">
  10:     <title></title>
  11: </head>
  12: <body>
  13:     <form id="form1" runat="server">
  14:     <asp:ScriptManager ID="ScriptManager1" runat="server">
  15:     </asp:ScriptManager>
  16:     <div>
  17:         <ve:Map ID="Map1" runat="server" Height="400px" Width="400px" ZoomLevel="4" Center-Latitude="46.17" Center-Longitude="11.65" OnServerDoubleClick="Button1_Click" />
  18:         </div>
  19:     <asp:UpdatePanel ID="UpdatePanel1" runat="server">
  20:         <ContentTemplate>
  21:             <asp:Button ID="Button1" runat="server" Text="Button" onclick="Button1_Click" />
  22:         </ContentTemplate>
  23:     </asp:UpdatePanel>
  24:     </form>
  25: </body>
  26: </html>

 

Default.aspx.cs:

   1: using System;
   2: using System.Collections.Generic;
   3: using System.Linq;
   4: using System.Web;
   5: using System.Web.UI;
   6: using System.Web.UI.WebControls;
   7:  
   8: using Microsoft.Live.ServerControls.VE;
   9:  
  10: namespace WebApplication12
  11: {
  12:     public partial class _Default : System.Web.UI.Page
  13:     {
  14:         protected void Page_Load(object sender, EventArgs e)
  15:         {
  16:  
  17:         }
  18:  
  19:         protected void Button1_Click(object sender, EventArgs e)
  20:         {
  21:             double curLat = Map1.Center.Latitude;
  22:             double curLong = Map1.Center.Longitude;
  23:  
  24:             LatLongWithAltitude curpos = new LatLongWithAltitude(curLat, curLong);
  25:  
  26:             Shape pushpin = new Shape(ShapeType.Pushpin, curpos);
  27:  
  28:             pushpin.Title = "<h1>Derzeitige Position</h1>";
  29:             pushpin.Description = "Breitengrad: " + curLat + "<br />Längengrad: " + curLong;
  30:  
  31:  
  32:             Map1.AddShape(pushpin);
  33:         }
  34:     }
  35: }

 

Diese Vorgehensweise ist beispielsweise sinnvoll, wenn wir Datensätze mit Geodaten versehen wollen, die händisch hinzugefügt werden müssen, weil das Aufzeichnungsgerät (zB eine Digitalkamera oder ein Audiorecorder) die Daten nicht selbst mit Koordinaten versehen konnte.
So lässt sich im Nachhinein jeder beliebige Datensatz mit Koordinaten versehen.

Bitte beachtet, dass ihr, falls ihr hier nur Copy und Pasten wollt, die Referenz auf Microsoft.Live.ServerControls.VE noch manuell einbinden müsst. Das passiert automatisch, wenn ihr das Map-Item aus der Toolbox in die ASP-Seite zieht.