Reklama sponsora

Mapy google api tutorial cz. 2



Mapy google api cz. 2

W poprzedniej części omówiliśmy sobie najprostszą z możliwych metod umieszczania mapy google na stronie za pomocą ramki. W tej części trochę więcej sobie pokodujemy.

Wyobraź sobie sytuację, w której klient ma całą sieć punktów sprzedażowych i chciałby je wszystkie umieścić na mapce kontaktowej. Co więcej chciałby żeby zamiast standardowego znacznika wyświetlały się jego loga w miejscach, w których znajdują się jego placówki. Jakby tego było mało klient chce także żeby te punkty były jakoś podpisane. Raczej ciężko byłoby to zrealizować za pomocą mapki w ramce, dlatego też wykorzystamy javascript api (moje ulubione do tych celów) i zrealizujemy wszystkie przedstawione tutaj zagadnienia.

Jak dodać mapę google za pomocą JavaScript API?

Na początek dodamy sobie po prostu mapkę. Pierwsza kwestia niczym się nie różni do części poprzedniej, trzeba wygenerować klucz dla usługi, aby to zrobić można wejść TUTAJ i wybrać GET a key, dalej dodajemy projekt lub generujemy klucz dla dotychczasowego projektu.

Kolejnym krokiem jest dodanie mapy za pomocą odpowiedniego kodu do naszego pliku z widokiem podstrony na przykład kontaktu.

Określamy wymiary mapy

Po pierwsze w sekcji <head> naszego dokumentu, lub jeśli robimy to w jakimś projekcie to pewnie mamy plik ze stylami np style.css gdzie trzymamy style. W każdym razie definiujemy wymiary boksa, w którym będzie się zawierać mapa (jest to ważny punkt bo łatwo go zapomnieć a bez niego mapy po prostu nie będzie widać :P). Poniżej przykładowy kod stylów do dodania do sekcji head.

#map {
        height: 400px;
        width: 100%;
       }

Określamy miejsce gdzie ma się wyświetlać mapa google

Drugim z czterech najważniejszych kroków jest dodanie tego boksa, dla którego przed chwilą ustaliliśmy parametry w miejscu gdzie ma się wyświetlać.


<div id="map"></div>


Pobieramy współrzędne i ustawiamy podstawową mapę

Trzecim krokiem będzie umieszczenie na stronie kodu JavaScript, dzięki któremu określimy że mapka ma się wyświetlać w tym a nie w innym boksie oraz gdzie zaznaczyć punkt na mapie. No ale zanim przejdziemy do kodu warto wiedzieć jaki jest najprostszy sposób na pobranie współrzędnych jakiegoś punktu na mapie google.

Sposób jest prosty i szybki. Otwieramy przeglądarkę google i wpisujemy adres, który nas interesuje i zaznaczamy że chcemy mape.

I teraz kiedy już mamy mapę, powinien się nieco zmienić link, wnikamy dokładnie w ten adres i w oko powinny się rzucić dość charakterystyczne liczby zaraz po adresie, to będą nasze szukane współrzędne.

W tym przypadku widać że współrzędne mojego adresu to 52.009422 oraz 23.0938793. Teraz skoro już wiemy jak pozyskać te dane możemy sobie na próbę wykorzystać je w skrypcie JS.


function initMap() {
        var tu_mieszkam = {lat: 52.009422, lng: 23.0938793};
        var map = new google.maps.Map(document.getElementById('map'), {
          zoom: 12,
          center: tu_mieszkam
        });
        var marker = new google.maps.Marker({
          position: tu_mieszkam,
          map: map
        });
      }

Co się dzieje w powyższym kodzie? Po pierwsze określamy zmienną „tu_mieszkam”, która jest obiektem współrzędnych mojego punktu na mapie pobranego wyżej. Dalej tworzymy obiekt mapy google w boksie o identyfikatorze „map”, który utworzyliśmy wczesniej a następnie ustawiamy przybliżenie mapy na 12 oraz centrujemy na wcześniej określonym punkcie. Dalej tworzymy obiekt „marker”, który jest znacznikiem, podajemy tutaj dwa podstawowe parametry pozycje (ustalony punkt czyli na środku mapy) oraz mapę (obiekt, który utworzyliśmy wyżej).

Dodajemy api

Czwartym z najważniejszych kroków w dodawaniu mapy google jest dodanie api. Można to zrobić po prostu odnosząc się do zasobów google za pomocą specjalnego linku tak jak poniżej.

 <script async defer
    src="https://maps.googleapis.com/maps/api/js?key=AIzaSyCg-NuXqdDnV5y5GgBVDj2H6wzI4kkQ8EM&callback=initMap">
    </script>

Tutaj ważne jest aby zmienić klucz na swój wygenerowany na początku.
Składając te wszystkie elementy w jedną całość otrzymujemy najprostszy przykład mapy google. Jest na niej zaznaczony jeden punkt na środku. Całość przedstawiam w listingu poniżej.

<!DOCTYPE html>
<html>
  <head>
    <style>
       #map {
        height: 400px;
        width: 100%;
       }
    </style>
  </head>
  <body>
    <div id="map"></div>
    <script>
      function initMap() {
        var tu_mieszkam = {lat: 52.009422, lng: 23.0938793};
        var map = new google.maps.Map(document.getElementById('map'), {
          zoom: 12,
          center: tu_mieszkam
        });
        var marker = new google.maps.Marker({
          position: tu_mieszkam,
          map: map
        });
      }
    </script>
    <script async defer
    src="https://maps.googleapis.com/maps/api/js?key=AIzaSyCg-NuXqdDnV5y5GgBVDj2H6wzI4kkQ8EM&callback=initMap">
    </script>
  </body>
</html>

Zastosowanie powyższego kodu powinno dać efekt jak na obrazku poniżej.

Jak zmienić wygląd znacznika / markera na mapie?

Czasami pojawia się konieczność zmiany wyglądu punktu na mapie google. A zmiana taka jest bardzo łatwa, wystarczy dodać do markera parametr icon a w nim ścieżkę interesującej nas grafiki.


var marker = new google.maps.Marker({
position: tu_mieszkam,
map: map,
icon: 'http://zaawansowanywordpress.pl/wp-content/themes/zwp/images/zaawansowanywordpress_logo.jpg'
});

Efekt powyższego listingu nie jest najciekawszy ponieważ dana grafika jest całkiem spora i pokrywa znaczną część mapy. Warto wykorzystać w tym przypadku dodatkowe parametry, i w ten sposób tworzymy obiekt z parametrami obrazka a następnie wykorzystujemy przy markerze skalowanie.


var image = {
//adres obrazka
url: 'http://zaawansowanywordpress.pl/wp-content/themes/zwp/images/zaawansowanywordpress_logo.jpg',
//skalowanie
scaledSize: new google.maps.Size(120, 30)
};
var marker = new google.maps.Marker({
position: tu_mieszkam,
map: map,
icon: image
});

W efekcie otrzymujemy efekt jak na obrazku poniżej.

Jak dodać marker na podstawie adresu

Zastosowanie takie jak powyżej możemy wykorzystać co najwyżej na naszej własnej stronie, klient raczej nie ogarnie pobierania punktu z mapy google, a przynajmniej tak będzie w większości przypadków, a strona gdzie nie da się edytować adresu siedziby to trochę słabo.

Dlatego teraz warto by dodatkowo określić pozycję markera na podstawie konkretnego adresu, aby pozycja pobierała się sama, wtedy w panelu wystarczy dodać jakieś pole o nazwie adres i klient może sobie sam dowolnie modyfikować w prosty sposób.

Wykonanie takiego rozwiązania jest nieco bardziej skomplikowane, ale dalej do zrobienia w tym celu wykorzystujemy geocoder.


var geocoder = new google.maps.Geocoder();
geocoder.geocode( { 'address': "Grzybowa 37 Biała Podlaska"}, function(results, status) {
if (status == 'OK') {
map.setCenter(results[0].geometry.location);
var marker = new google.maps.Marker({
map: map,
icon: image,
position: results[0].geometry.location
});
}
});

W powyższym przykładzie tworzymy obiekt Geocoder-a następnie jako pierwszy parametr przekazujemy obiekt z adresem, który nas interesuje a jako drugi funkcję. Funkcja sprawdza status zapytania o adres i jeśli wszystko jest ok centruje mapkę na znalezionym adresie a następnie stawia w tym miejscu marker.

Efekt powinien być identyczny jak wcześniej z tym że teraz zamiast współrzędnych wykorzystaliśmy adres.

Jak dodać kilka adresów na mapie

Na koniec sytuacja w której klient ma kilka placówek i chciałby je zaznaczyć na mapce. W tym celu po prostu utworzymy tablicę z adresami tych placówek i dodamy je wykorzystując pętlę i wcześniejszy przykład.


var geocoder = new google.maps.Geocoder();
var adresy = ["grzybowa 37 biała podlaska", "Dworzec pkp biała podlaska", "Pocztowa 2b Biała podlaska"];
adresy.forEach(function(address){
geocoder.geocode( { 'address': address}, function(results, status) {
if (status == 'OK') {
map.setCenter(results[0].geometry.location);
var marker = new google.maps.Marker({
map: map,
position: results[0].geometry.location
});
}
});
});

W powyższym kodzie najpierw tworzymy obiekt Gocoder, dalej tablicę z adresami a następnie wykorzystujemy pętlę by pobrać adresy z tablicy z adresami oraz wyświetlić punkty na mapie zgodnie z tymi adresami, tak jak w przykładzie z akapitu wyżej.

Ostateczny efekt to powinno być coś podobnego jak na obrazku poniżej. Warto tutaj wspomnieć że nie zawsze trzeba znać dokładny adres, w tablicy wpisałem także dworzec pkp i też został odpowiednio zaznaczony.

Jak widać na mapie są zaznaczone trzy punkty czyli oczekiwany efekt został osiągnięty. I to by było na tyle w tej części. Cały kod js wykorzystany w tym przykładzie przedstawia poniższy listing. Aby zmienić punkty na dowolne obrazki wystarczy podstawić parametr icon : image w markerze.


function initMap() {
var map = new google.maps.Map(document.getElementById('map'), {
zoom: 12
});
var image = {
//adres obrazka
url: 'http://zaawansowanywordpress.pl/wp-content/themes/zwp/images/zaawansowanywordpress_logo.jpg',
//skalowanie
scaledSize: new google.maps.Size(120, 30)
};
var geocoder = new google.maps.Geocoder();
var adresy = ["grzybowa 37 biała podlaska", "Dworzec pkp biała podlaska", "Pocztowa 2b Biała podlaska"];
adresy.forEach(function(address){
geocoder.geocode( { 'address': address}, function(results, status) {
if (status == 'OK') {
map.setCenter(results[0].geometry.location);
var marker = new google.maps.Marker({
map: map,
position: results[0].geometry.location
});
}
});
});
}

 

 

Dodany przez doctoral dissertation help meaning
2022-02-12 08:14:21

are dissertation writing services legal https://helpon-doctoral-dissertations.net/

Dodany przez writing dissertation outline
2022-02-12 05:00:47

writing a masters dissertation https://dissertations-writing.org/

Dodany przez writing dissertation conclusion
2022-02-12 00:37:22

social work dissertation help https://mydissertationwritinghelp.com/

Dodany przez dissertation writing grants
2022-02-11 20:53:22

masters dissertation help in india https://help-with-dissertations.com/

Dodany przez thesis versus dissertation
2022-02-11 16:04:57

dissertation proposal defense https://dissertationwriting-service.com/

Dodany przez writing a literature based dissertation
2022-02-10 20:21:08

need help with my dissertation https://buydissertationhelp.com/

Dodany przez slots pictures
2022-02-04 17:00:37

slots era cheats https://slotmachinegameinfo.com/

Dodany przez common expansion slots
2022-02-04 11:50:28

shake the sky real slots https://www-slotmachines.com/

Dodany przez scatter slots topless
2022-02-04 09:14:30

super high limit slots https://411slotmachine.com/

Dodany przez ruby slots
2022-02-04 05:42:21

video slots free https://download-slot-machines.com/

Dodany przez triple seven slots free
2022-02-04 01:35:49

no deposit slots https://beat-slot-machines.com/

Dodany przez vegas online slots
2022-02-03 21:40:26

slots capital https://slot-machine-sale.com/

Dodany przez slots garden casino
2022-02-03 18:05:59

kitty glitter slots https://slotmachinesforum.net/

Dodany przez las vegas slots free
2022-01-29 08:10:00

free slots https://slotmachinesworld.com/

Dodany przez cash me out slots youtube
2022-01-29 05:04:53

play ginger wild slots https://pennyslotmachines.org/

Dodany przez doubledown casino slots
2022-01-29 01:02:34

free slots on facebook https://candylandslotmachine.com/

Dodany przez quick hits free slots
2022-01-28 22:20:40

ff tactics 24 slots https://freeonlneslotmachine.com/

Dodany przez free slots 777 three rows
2022-01-28 17:58:44

slim slots https://2-free-slots.com/

Dodany przez gay dating site/crosword
2022-01-15 14:06:45

black gay old men dating apps https://speedgaydate.com/

Dodany przez older gay chat
2022-01-14 23:02:11

michigan gay chat https://gay-buddies.com/

Dodany przez free gay live chat
2022-01-14 17:49:56

miai chat gay https://gaytgpost.com/

Dodany przez gay dating game
2022-01-14 15:24:50

free gay men dating sites missouri https://gaypridee.com/

Dodany przez gay chat colorado
2022-01-14 12:22:58

gay phone chat lines caribbean https://bjsgaychatroom.info/

Dodany przez 1indemnity
2022-01-13 02:59:06

2elliott


Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *