<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>&#60;?blog &#187; Google API</title>
	<atom:link href="http://blog.visionsoftware.pl/tag/google-api/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.visionsoftware.pl</link>
	<description>...nie tylko o programowaniu</description>
	<lastBuildDate>Sun, 23 Mar 2014 19:23:43 +0000</lastBuildDate>
	<language>pl-PL</language>
		<sy:updatePeriod>hourly</sy:updatePeriod>
		<sy:updateFrequency>1</sy:updateFrequency>
	
	<item>
		<title>Mapa Google ze wskazówką dojazdu na stronie www</title>
		<link>http://blog.visionsoftware.pl/java-script-jquery/mapa-google-ze-wskazowka-dojazdu-na-stronie-www.html</link>
		<comments>http://blog.visionsoftware.pl/java-script-jquery/mapa-google-ze-wskazowka-dojazdu-na-stronie-www.html#comments</comments>
		<pubDate>Mon, 28 Nov 2011 22:56:18 +0000</pubDate>
		<dc:creator><![CDATA[Marcin Fliszta]]></dc:creator>
				<category><![CDATA[Java Script/jQuery]]></category>
		<category><![CDATA[Google API]]></category>
		<category><![CDATA[Google Maps]]></category>
		<category><![CDATA[java script]]></category>

		<guid isPermaLink="false">http://blog.visionsoftware.pl/?p=413</guid>
		<description><![CDATA[Dział Kontakt na stronie internetowej oprócz danych teleadresowych może zawierać mapkę dojazdu, formularz kontaktowy, listę oddziałów firmy, itd. Z Google Maps możemy natomiast stworzyć bardzo ciekawe rozwiązanie &#8211; oprócz pokazania lokalizacji nałożyć na nie wskazówki dojazdu z wybranego przez użytkownika miejsca. Wystarczy w tym celu stworzyć dwa elementy. Po pierwsze należy umieścić na stronie odpowiedni wycinek mapy z oznaczonym miejscem. Oprócz tego potrzebny będzie formularz z polem do wpisania adresu początkowego. Po jego zatwierdzeniu, na [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Dział Kontakt na stronie internetowej oprócz danych teleadresowych może zawierać mapkę dojazdu, formularz kontaktowy, listę oddziałów firmy, itd. Z Google Maps możemy natomiast stworzyć bardzo ciekawe rozwiązanie &#8211; oprócz pokazania lokalizacji nałożyć na nie wskazówki dojazdu z wybranego przez użytkownika miejsca.<span id="more-413"></span></p>
<p>Wystarczy w tym celu stworzyć dwa elementy. Po pierwsze należy umieścić na stronie odpowiedni wycinek mapy z oznaczonym miejscem. Oprócz tego potrzebny będzie formularz z polem do wpisania adresu początkowego. Po jego zatwierdzeniu, na mapie nałożone zostaną wskazówki dojazdu. Przykład takiego działania można zobaczyć <a title="Przykład: Mapa Google ze wskazówką dojazdu na stronie www" href="http://blog.visionsoftware.pl/przyklady/413/" target="_blank">tutaj</a>.</p>
<h3>Wstawiamy Google Maps na naszą stronę</h3>
<p>Na początek potrzebujemy zdefiniować obiekt, w który wstawimy mapę (div <code>map_canvas</code>), oraz formularz, dzięki któremu użytkownik poda adres początkowy do wyznaczenia trasy.</p>
<pre class="brush: xml; title: ; notranslate">
&lt;div id=&quot;map_directions_form&quot;&gt;
	&lt;form action=&quot;&quot; method=&quot;post&quot;&gt;
		&lt;label for=&quot;map_directions_start&quot;&gt;Pokaż na mapie dojazd z:&lt;/label&gt;
		&lt;input type=&quot;text&quot; value=&quot;&quot; id=&quot;map_directions_start&quot; /&gt;
		&lt;input type=&quot;submit&quot; name=&quot;&quot; id=&quot;show_route&quot; value=&quot;Pokaż&quot; /&gt;
	&lt;/form&gt;
&lt;/div&gt;
&lt;div id=&quot;map_canvas&quot;&gt;&lt;/div&gt;
</pre>
<p>Następnie musimy wczytać odpowiednie dane z Goggle Maps API. Możemy to zrobić dołączając odpowiedni kod JavaScript</p>
<pre class="brush: xml; light: true; title: ; notranslate">
&lt;script type=&quot;text/javascript&quot; src=&quot;http://maps.googleapis.com/maps/api/js?sensor=false&amp;region=PL&quot;&gt;&lt;/script&gt;
</pre>
<p>Parametry <code>GET</code> podane w adresie www mogą być następujące:</p>
<ul>
<li><code>sesnor</code> – oznacza, czy określić położenie użytkownika na podstawie GPS (używany przy korzystaniu z urządzeń mobilnych). Przyjmuje wartość <code>true</code> lub <code>false</code>.</li>
<li><code>region</code> – określa region, jakiego będą dotyczyć nasze wyszukiwania. Dzięki niemu możemy ograniczyć do kraju lub kontynentu. Warto to zrobić, gdyż w niektórych przypadkach wpisując miasta możemy zostać oznaczeni na przykład w USA a nie w Polsce.</li>
</ul>
<p>Kolejnym krokiem jest określenie parametrów mapy, która zostanie wyświetlona. Można to zrobić za pośrednictwem następującego kodu:</p>
<pre class="brush: jscript; title: ; notranslate">
var directionsDisplay;
var directionsService = new google.maps.DirectionsService();
var map;

var myLocation = new google.maps.LatLng(52.2302294, 21.0118487);

function initialize() {
  directionsDisplay = new google.maps.DirectionsRenderer();
  
  var myOptions = {
    zoom:15,
    mapTypeId: google.maps.MapTypeId.ROADMAP,
    center: myLocation,
    panControl: true,
    zoomControl: true,
    mapTypeControl: true,
    scaleControl: true,
    streetViewControl: false,
  }

  map = new google.maps.Map(document.getElementById(&quot;map_canvas&quot;), myOptions);
  directionsDisplay.setMap(map);

  var marker = new google.maps.Marker({
      position: myLocation, 
      map: map,
      title:&quot;Moja lokacja&quot;
  });  
}
</pre>
<p>W linii 5 definiujemy punkt, gdzie umieszczony zostanie na mapie znacznik wskazujący miejsce. W powyższym przykładzie zostało to zrobione na podstawie współrzędnych GPS. Następnie definiujemy funkcję <code>initialize()</code>, która wyświetli mapę Google. W tablicy <code>myOptions</code> przekazujemy poszczególne parametry konfiguracyjne:</p>
<ul>
<li><code>zoom</code> &#8211; stopień przybliżenia mapy (im wyższy, tym większe oddalenie widoku)</li>
<li><code>mapTypeId</code> &#8211; typ mapy, jaki ma być wyświetlany. Ostatni parametr daje możliwości ustawienia <code>SATELLITE</code>, <code>HYBRID</code> lub <code>TERRAIN</code>.</li>
<li><code>center</code> &#8211; punkt na jaki mapa ma być wycentrowana – współrzędne GPS, w tym wypadku po prostu zmienna pod którą zdefiniowano naszą lokację</li>
</ul>
<p>Kolejne zmienne ustawiamy na <code>true</code> lub <code>false</code> w zależności czy chcemy, aby pojawił się odpowiedni element interfejsu mapy:</p>
<ul>
<li><code>panControl</code> &#8211; przesuwanie mapy (przyciski kierunków przewijania)</li>
<li><code>zoomControl</code> &#8211; suwak zbliżenia i oddalenia widoku</li>
<li><code>mapTypeControl</code> &#8211; przyciski zmiany typu widoku: mapa oraz satelita</li>
<li><code>scaleControl</code> &#8211; wyświetlanie aktualnej skali mapy (w lewym dolnym rogu)</li>
<li><code>streetViewControl</code> &#8211; obsługa Street View</li>
</ul>
<p>W kolejnych liniach określamy, że mapa ma być wstawiona w element o id <code>map_canvas</code>.  Następnie określamy marker, który wskaże oznaczone współrzędne:</p>
<ul>
<li><code>position</code> &#8211; współrzędne</li>
<li><code>map</code> &#8211; mapa (tutaj obiekt utworzony wcześniej)</li>
<li><code>title</code> &#8211; tooltip jaki pojawi się po najechaniu na marker kursorem myszy</li>
</ul>
<h3>Wskazówki dojazdu</h3>
<p>Gdy mamy zdefiniowaną mapę i formularz, możemy stworzyć kod za pośrednictwem którego wyświetlimy wskazówki dojazdu. W tym celu zdefiniujemy następującą funkcję:</p>
<pre class="brush: jscript; title: ; notranslate">
function calcRoute() {
  var start = document.getElementById(&quot;map_directions_start&quot;).value;
  var end = myLocation;
  
  var request = {
      origin:start, 
      destination:end,
      travelMode: google.maps.DirectionsTravelMode.DRIVING
  };
  directionsService.route(request, function(response, status) {
    if (status == google.maps.DirectionsStatus.OK) {
      directionsDisplay.setDirections(response);
    }
  });
}
</pre>
<p>Pod zmienną <code>start</code> wstawiamy podany przez użytkownika w formularzu adres, pod <code>end</code> natomiast nasz punkt docelowy. W powyższym przykładzie podano go za pomocą współrzędnych GPS, można to jednak zrobić przypisując do zmiennej dokładny adres:</p>
<pre class="brush: jscript; light: true; title: ; notranslate">
var end = &quot;Warszawa, Marszałkowska 100&quot;;
</pre>
<p>Następnie w tablicy <code>request</code> podajemy kilka dodatkowych parametrów:</p>
<ul>
<li><code>orgin</code> &#8211; punkt początkowy</li>
<li><code>destination</code> &#8211; punkt końcowy</li>
<li><code>travelMode</code> &#8211; sposób podróżowania, parametr może przyjąć wartości: <code>DRIVING</code>, <code>WALKING</code> lub <code>BICYCLING</code> (ostatnia opcja była dostępna w momencie pisania artykułu tylko w USA)</li>
</ul>
<h3>Uruchomienie mapy</h3>
<p>Pozostało już tylko wyświetlenie mapy i przypisanie do przycisku <code>submit</code> odpowiedniej funkcjonalności. Posłuży do tego poniższy kod:</p>
<pre class="brush: jscript; title: ; notranslate">
$(document).ready(function(){
	initialize();
	
	$(&quot;#map_directions_form form&quot;).submit(function(event){
		 event.preventDefault();
		 calcRoute();
	});
});
</pre>
<p>Jak widać uruchomienie usługi jest bardzo proste. Google Maps API zawiera wiele innych ciekawych możliwości, wszystkich zainteresowanych odsyłam do <a title="Google Maps API v3" href="http://code.google.com/intl/pl/apis/maps/documentation/javascript/basics.html" target="_blank">dokumentacji</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.visionsoftware.pl/java-script-jquery/mapa-google-ze-wskazowka-dojazdu-na-stronie-www.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
