Nový ASP.NET ovlávadací prvek pro práci s Virtual Earth

V rámci July CTP verze Windows Live Tools for Visual Studio je k dispozici nový ASP.NET ovládací prvek, který umožňuje pracovat v ASP.NET stránkách přímo s Virtual Earth. Pro instalaci tohoto CTP jděte na stránku (https://www.microsoft.com/downloads/details.aspx?familyid=50A9EC01-267B-4521-B7D7-C0DBA8866434&displaylang=en)

Po instalaci doplňku máme ve Visual Studiu k dispozici práci s Live službami (toto bylo k dispozici již u starších verzí doplňku), tak též možnost pracovat s Virtual Earth.

 Doplněk Visual Studia pro práci s Live službami

Práce s VirtualEarth využívá technologii AJAX a vývojář nemusí psát žádný klientský skript. POZOR! Vlastní kontrol vyžaduje existenci ScriptManageru, který je nutné na stránku umístit. Ovládací prvek si ho sám na stránku nevloží.

Jednoduchým vložením ovládacího prvku Map z toolboxu získáme plnou funkcionalitu Virtual Earth, tak jak ji známe z https://maps.live.com.

Virtual Earth

V rámci nastavování vlastností máme k dispozici velké množství voleb, které není potřeba podrobnějí probírat. Ty nejzajímavější jsou:

  • Center : pro určení výchozí polohy mapy
  • Locale : je zde k dispozici dokonce cs_cz !!
  • MapMode : určuje zda chceme 2D mapy či 3D mapy. Zatím není k dispozici dobré 3D pokrytí České Republiky, takže zůstaneme u 2D modelu. 3D model pak stejně vyžaduje klientský doplněk instalovaný na počítač.
  • MapStyle :určuje co vlastně chceme vidět (Road, Aerial, BirdsEye, ...)
  • MiniMap : jestli chceme mít na mapě "minimapu", včetně umístění této minimapy... což pak vypadá nějak takto:

Minimap ve Virtual Earth

Ve vlastním zdrojovém kódu pak uvidíme obdobnou definici:

<ve:Map ID="Map1" runat="server" Height="500px" Locale="cs_cz" MiniMap="True" Width="500px" ZoomLevel="10" Center-Latitude="50" Center-Longitude="14" ScaleBarDistanceUnit="Kilometers" />

Co se týká zpracovávání mapových událostí, máme k dispozici jak client-side události

Client-side události

tak i server-side události

Server-side události

Práce s vlastnostmi je samozřejmě možná i za běhu aplikace a není nutné vše nastavovat "ručně" během deklarace ovládacího prvku. Takto například nastavíme Bird's Eye pohled na Space Needle v Seattle:

using Microsoft.Live.ServerControls.VE;
LatLongWithAltitude objLatLong = new LatLongWithAltitude(47.622, -122.3491);
Map1.Clear();
Map1.MapMode = MapMode.Mode2D;
Map1.MapStyle = MapStyle.Birdseye;
Map1.SetBirdseyeScene (objLatLong,Microsoft.Live.ServerControls.VE.Orientation.North,10, null);

Výsledkem je poté tato mapa:

Bird's Eye pohled na Space Needle v Seattle

Součástí instalace jsou též "další podpůrné" objekty pro vývojáře, tak aby vůbec nemuseli psát nějaký podpůrný kód na straně klienta. Využívá se rozšíření Mapového objektu pomocí tzv. Extenders. Jedná se např. o objekt MiniMap.

Tento kód, zajistí zapínání/vypínání MiniMapy:

<%@ Register assembly="Microsoft.Live.ServerControls.VE" namespace="Microsoft.Live.ServerControls.VE" tagprefix="ve" %>
<%@ Register assembly="Microsoft.Live.ServerControls.VE" namespace="Microsoft.Live.ServerControls.VE.Extenders" tagprefix="cc1" %>
<ve:Map ID="Map2" runat="server" Height="297px" Width="297px" ZoomLevel="4" />
<cc1:MiniMap ID="Map2_MiniMap" runat="server" ToggleMode="Toggle" TargetControlID="MiniMapBtn" MapControlID="Map2" />
<br/>
<asp:LinkButton ID="MiniMapBtn" runat="server">Zapnutí/vypnutí MiniMapy</asp:LinkButton>

Což vede k mapě umožňující zapínání MiniMapy bez jediného řádku programovacího kódu:

Minimap ve Virtual Earth

Z dalších dostupných vlastností jmenujme např:

  • Práce s directions pomocí metody GetDirections
  • Vyhledáván objektů a míst na mapě
  • Získávání informací o dopravě (traffic information), samozřejmě jenom z míst, kde jsou tyto informace dostupné :)
  • Můžeme načíst informace pomocí GeoRSS, KML či Live Maps Collection).
  • A mnohé další

Michal Neuwirth