Home Artykuły Przykłady .NET How To: BingMaps + GoogleMapsApi + MVC 4

Opublikowano: 05 marca, 2012 Uwaga, otwiera nowe okno. PDFDrukujEmail

How To: BingMaps + GoogleMapsApi + MVC 4

Mapy to nieodłączny element dzisiejszych stron WWW. Pomagają znaleźć nam drogę między A i B, ciekawe miejsca czy nawet położenie naszych znajomych. Na rynku mamy prostą sytuację, dominuje Google Maps, lecz Microsoft ma swoje Bing Maps które jest według mnie dobrą alternatywą. Istnieją również mapy mniejszych producentów, lecz w większości opierają one się na zmodyfikowanych w w/w mapach. Co do starcia Google vs Bing, wygranego nie ma, wszystko zależy od naszych wymagań, najlepsze jednak są kompromisy i współpraca.

Google posiada większe możliwości API, posiada bardziej otwarty kod, dzięki czemu można zrobić wiele i szybko. Bing jest szybszy w działaniu i bardziej intuicyjny, posiada też dużo lepsze, jednorodne mapy, same kontrolki są darmowe i integralne z projektami Visual Studio. Do projektu nad którym obecnie pracuje pod względem wizualnym i obsługi bardziej odpowiada BingMaps, lecz brak podstawowych funkcji API jest bolesny. Na wszystko jest jednak sposób :)

 

Głowna aplikacja nad którą pracuje opiera się na wzorcu ASP MVC w wersji 4, dane do niej dostarczane są poprzez WebService, dlaczego więc nie dostarczać w ten sam sposób brakujących funkcjonalności API Bing'a, dane otrzymamy prosto od konkurencji. Większość API Google Maps ze względu na otwartość kodu jest dostępna publicznie w postaci WebService, co natchnęło pewnych programistów aby stworzyć bibliotekę komunikacyjną dla platformy .NET. Bibliotekę możemy pobrać za darmo ze strony projektu. Po dodaniu referencji w naszym projekcie możemy korzystać z przestrzeni nazw Google.Api.Maps.Service.

Jedną z brakujących funkcji w Bing była geolokalizacja po kodzie pocztowym, którą rozwiązać można następująco:

public GeographicPosition GetLocationOfPostCode(string postcode)
{
var request = new GeocodingRequest(); //Stworzenie obiektu zapytania
request.Address = postcode + " ,Poland"; //Dodanie lokalizacji do adresu pocztowego
request.Sensor = "false"; //Wyłączenie sensoru
var response = GeocodingService.GetResponse(request); //Wysłanie zapytania
var result = response.Results.First(); //Pobranie pierwszego wyniku
return result.Geometry.Location; //Zwrócenie geolokalizacji
}

Oczywiście w interfejsie końcowym należy stworzyć "okienko" funkcji, no i takim sposobem API mamy z głowy.

Teraz należy dodać Mapę Binga, aby to zrobić należy pobrać SDK Bing Maps zawierające m.in. kontrolkę webową Bing Maps AJAX Control 7.0. SDK można pobrać z portalu Mictosoft Connect, do zainstalowania potrzebować będziemy również VisualStudio 2010 co jest oczywiste, oraz Silverlight Tools 4+. Po poprawnej instalacji możemy dodać referencje BingMaps i wcześniej wspomnianą GoogleApi (w celu rozpoznania typów zwracanych z WebService)

W pliku HomeController.cs ląduje funkcja pobrania geolokalizacji dla kodu "35-065" i przesłanie jej do widoku za pomocą nie modelu a kontenera ViewData.


public ActionResult Map()
{
ViewBag.Message = "Przykładowa mapa z kodem pocztowym Rzeszowa";  //Wiadomości
var result = WebServiceConnection.DataClientInstance.GetLocationOfPostCode("35-065");  //Wywołanie WS z kodem
ViewData["Latitude"] = result.Latitude.ToString().Replace(',', '.');  //Zapis współczynników do ViewData
ViewData["Longitude"] = result.Longitude.ToString().Replace(',', '.'); //  z zabezpieczeniem formatu
return View();  //Zwrócenie widoku
}

 

Plik widoku Map.cshtml zawiera import biblioteki Ajaxowej, konstruktor i kontener mapy, oraz fragment arkusza stylu. Warto zwrócić uwagę na fragment konstruktora w którym w miejscu 'KluczAutoryzacji' podajemy klucz otrzymany od Microsoftu. Jest to wymagany zabieg aby korzystać w pełni z dobrodziejstw kontrolki, klucz można otrzymać bezpłatnie na stronie bingmapsportal w kilka minut, wymagane jest jedynie LiveID.



@{  ViewBag.Title = "MapaBinga";  } //Ustawienie tytułu
<hgroup class="title">
<h1>@ViewBag.Title</h1> //Wyświetlenie tytułu
<h2>@ViewBag.Message</h2> //Wyświetlenie wiadomości
</hgroup>
<article>
<script src="http://dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=7.0" type="text/javascript"></script> //Import skryptów
<script type="text/javascript">
function showMap() { //Funkcja tworząca mapę
var map = new Microsoft.Maps.Map($("#DivMap")[0],{ //Konstruktor mapy w miejscu Kontener o ID "DivMap"
credentials: 'KluczAutoryzacji', //Klucz Autoryzacji
center: new Microsoft.Maps.Location( //Pozycja początkowa
@ViewData["Latitude"], //Dane z ViewData
@ViewData["Longitude"]), //
zoom: 8 //Zbliżenie początkowe
});
}
$(document).ready(function () { //Zdażenie zakończenia ładowania dokumentu
showMap(); //Stworzenie mapy
});
</script>
<style> //Style kontenera
#DivMap {
position:relative;
width: 500px;
height: 500px;
border:0px
}
</style>
<div id="DivMap"></div> //Kontener mapy
</article>



Ostatecznie otrzymujemy w miejscu kontenera naszą mapę, która jest wycentrowana na miasto Rzeszów (podawaliśmy kod pocztowy "35-065"). No i co nie było to chyba takie trudne prawda ? Więcej przykładów z działaniem kontrolki jest dostępna tutaj. No i tak kończę pierwszy mój tutorial z .NET, niedługo kolejne.


How To: BingMaps + GoogleMapsApi + MVC 4
Zaktualizowano: 03-05-2012

Nowości

12 - 04 - 2012

Jango Player in Chrome WebStore

This will be short news. Jango Player extension for Chrome Browser has been published today to official Chrome WebStore. It's completely free! I just updated it to version 1.2.1 because of changes in security and manifest file, i also made some improvements in performance. Hope you all enjoy it! Extension is right >>>HERE<<<. Feel free to leave feedback and rate :)

 

11 - 17 - 2012

Come Back ! I Update :)

Witam po długiej przerwie, jak pewnie niektórzy z was zauważyli strona przez dłuższy czas nie była aktualizowana, by ostatecznie 2 miesiące temu zniknąć całkowicie. Brak aktualizacji był spowodowany wypadkiem który mnie spotkał na drogach Ukrainy co zaowocowała 2 miesięczną niedyspozycją. Po powrocie do zdrowia ogromny nakład czasu poświęciłem na pracę magisterską i obronę. Ostatecznie pracę ukończyłem i obroniłem się, ale zakończenie studiów nie spowodowało bym odczuł wolny czas. Zaabsorbowała mnie praca, w afekcie czego założyłem własną działalności. Ostatnie zaś 3 miesiące to przepychanki z dostawcą serwera, i właścicielem domeny o prawa do niej. W tym tygodniu odzyskałem domenę i wykupiłem inny hosting, problem z głowy, przynajmniej na 2 lata :). W związku z nowym charakterem strony firmowej WSharp.pl zaktualizowałem kilka stron i dane kontaktowch. Jeśli znajdę trochę więcej czasu postaram się napisać coś więcej. Pozdrawiam :D

 

03 - 14 - 2012

Surowce energetyczne, problem dnia codziennego

Energia dziś to podstawa świata, nie głupi stwierdził „Energia rządzi światem, posiądź energie, a posiądziesz świat”. Jej konsumpcja towarzyszą nam na każdym kroku, potrzebujemy jej do włączenia komputera, przygotowania obiadu , dojechania do pracy czy ogrzania mieszkania. Trudno sobie wyobrazić życie bez niej, i dostawcy jej są tego świadomi. I chociaż ciągłe podwyżki energii oraz surowców energetycznych stały się codziennością, nikt nie wychodzi na ulice w proteście. Ale dlaczego tak szybko ceny rosną, a nie spadają prawie wcale?

Więcej …

 

03 - 12 - 2012

Metalowe lato 2012

Czasy w których każdy przyjazd gwiazdy światowego formatu do kraju nad Wisłą był ogłaszany we wszystkich mediach minął. Takie wydarzenia przeszły do porządku dziennego, co jest całkowicie zrozumiałe. Niestety przez tą codzienność czasami brakuje informacji o tym "Kto? Gdzie? Kiedy? Za ile? I dlaczego tak drogo?", szczególnie dla wykonawców "mało medialnych" jakimi są na przykład zespoły metalowe. Dlatego postanowiłem przeglądnąć trochę prasy, blogów i harmonogramów klubów aby wyłuskać parę ciekawych koncertów.

 

Więcej …

 

Ankieta

Czego ma być więcej?
 

Ćwierkanie

W zakres mojej oferty wchodzą:

  • Tworzenie stron internetowych, customizacja systemów CMS - Joomla, Drupal, jPortal.
  • Tworzenie aplikacji:
    • internetowych - ASP MVC, Django, RoR
    • desktopowych - C#,WPF
    • Metro Windows 8
    • mobilnych Windows Phone 7/8

O mnie

07 - 21 - 2010

 

Jestem małym szarym programistą C#, WPF z doświadczeniem biznesowym w branży od 2009 roku. Preferuję komercyjne rozwiązania Microsoft z platformy .NET, szczególnie aplikacje webowe ASP MVC oraz mobilne Windows Phone. Jestem otwartym na niekonwencjonalne pomysły i nowe rozwiązania, to tak po krótce....

Więcej …

Szybki kontakt

Sudoł Waldemar
E-mail
GG: 2712468
Skype: Skype Me™! volo_pl
Dane firmy:
NIP: 867-214-68-43
REGON: 180889577

QR Contact

Profiles: