Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Google API + pobieranie współrzędnych
Czadus
post
Post #1





Grupa: Zarejestrowani
Postów: 164
Pomógł: 4
Dołączył: 29.08.2008

Ostrzeżenie: (0%)
-----


Witam.

Mam taki problem. Potrzebuję automatycznie pobrać współrzędne wielu miast dzięki usłudze Google Maps. Moje pytanie brzmi, jak to zrobić, w jaki sposób tak zautomatyzować mój projekt strony, aby pobrał wszystkie dane i zapisał je do mojej bazy. Cały sęk w tym, że potrzebuję te dane, a miejscowości w Polsce jest około 226tys, więc ręcznie jest to nierealne. Szukam zatem innego rozwiązania. Ma ktoś może jakieś pomysły?? Może Google API udostępnia takie możliwości, przy czym póki co, nic takiego nie znalazłem.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 17)
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




no ale spis miast masz? Bo jak tak, to zapodajesz do google api miasto i on ci zwraca jego wspolrzedne


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Czadus
post
Post #3





Grupa: Zarejestrowani
Postów: 164
Pomógł: 4
Dołączył: 29.08.2008

Ostrzeżenie: (0%)
-----


No to tak, wiem, że on je zwraca, tylko co, gdy potrzebujesz mieć współrzędne wszystkich miejscowości w Polsce?? A jest och ponad 200 tysięcy?? Więc potrzebuję mieć do tego automat, skrypt, który sam mi to wykona i zapisze do jakiejś bazy.

Udało mi się stworzyć coś takiego. Podaję miejscowość, ewentualnie kod pocztowy itp. a dostaję w odpowiedzi współrzędne. Kod wygląda następująco:

Kod
<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Strict//EN'  
    'http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd'>  
<html xmlns='http://www.w3.org/1999/xhtml'>  
<head>  
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />  
    <title>Przykład</title>  
    <script type="text/javascript" src="http://maps.google.com/maps?file=api&amp;v=2&amp;key=KLUCZAPI"></script>
    <script type="text/javascript">
    <!-- <![CDATA[
    var map;
    var marker;
    var j=0;
    function pokaz(lat, lng, element) {
      marker = new GMarker(new GLatLng(lat, lng), {draggable: true});
      map.addOverlay(marker);
      GEvent.addListener(marker, "dragend", function() {
        document.getElementById(element).innerHTML = "("+marker.getLatLng().lat().toFixed(4)+","+marker.getLatLng().lng().toFixed(4)+")";
      });
    }
    
    function load() {
    
      if (GBrowserIsCompatible()) {
        map = new GMap2(document.getElementById("map"));
        map.setCenter(new GLatLng(51.629805, 19.237883), 6);
        map.addControl(new GLargeMapControl());
        map.addControl(new GMapTypeControl());
    
        function punkt(adres, info) {
          return new GClientGeocoder().getLatLng(adres, function(gps) {
            var lat = gps.lat().toFixed(4);
            var lng = gps.lng().toFixed(4);
            j++;
            pokaz(lat, lng, j);
            document.getElementById("dane").innerHTML += "<br /><a id='a"+j+"' href='javascript:pokaz("+lat+","+lng+", \"a"+j+"\")'>("+lat+","+lng+")</a> - "+info+" - "+adres;
          });
        }
    
        var dane = new Array(
        new Array("Częstochowa", "Częstochowa"),
        new Array("Sanok", "Sanok"),
        new Array("Warszawa", "Warszawa"),
        new Array("84-140, jastarnia", "Jastarnia"),
        new Array("szczecin", "Szczecin"),
        new Array("Osinów Dolny", "Osinów Dolny"))
        
        for(var i=0; i<dane.length; i++) { punkt(dane[i][0], dane[i][1]); }
      }
    }
    // ]]> -->
    </script>
</head>  
<body onload="load()" onunload="GUnload()">
    <div id="map" style="width: 550px; height: 500px"></div>
    <div id="dane"></div>
</body>
</html>


Pozostaje jeszcze kwestia, aby te dane zapisać do jakiejś bazy, lub pliku, prosto ze skryptu JavaScript
Go to the top of the page
+Quote Post
nospor
post
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




ale ty masz skorzystac api google z poziomu php a nie z poziomu js smile.gif

  1. <?php
  2. $addressG = 'http://maps.google.com/maps/geo?output=json&oe=utf-8&key=TWOJKLUCZ';
  3.        $addressG.='&q='.urlencode('Warszawa,Poland');
  4.        $page = file_get_contents($addressG);
  5.        $ar = json_decode($page,true);
  6.        print_r($ar);
  7. ?>

smile.gif

A w php do bazy juz chyba zapiszesz winksmiley.jpg


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Czadus
post
Post #5





Grupa: Zarejestrowani
Postów: 164
Pomógł: 4
Dołączył: 29.08.2008

Ostrzeżenie: (0%)
-----


Dzięki, w sumie łatwiejszy sposób. Niestety pozostaje jeszcze problem z poprawnym nakładaniem tych punktów na mapę, jedne są dobrze, to drugie jakoś tak przesunięte....
Go to the top of the page
+Quote Post
nospor
post
Post #6





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




ja tam nie mialem zadnych problemow.

moze źle nakladasz, bo wspolrzedne mi google dobrze zwracalo


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Czadus
post
Post #7





Grupa: Zarejestrowani
Postów: 164
Pomógł: 4
Dołączył: 29.08.2008

Ostrzeżenie: (0%)
-----


No właśnie jest tak, że współrzędne pewnie są dobre, ale nie wiem jak mapkę dobrać, bo sek w tym, że mapką będzie zwykły JPG, a z google ja tylko chce pobrać współrzędne.
Go to the top of the page
+Quote Post
Maxiu
post
Post #8





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 3.08.2003
Skąd: Górny Śląsk

Ostrzeżenie: (0%)
-----


Cytat(Czadus @ 6.02.2009, 12:34:56 ) *
....miejscowości w Polsce jest około 226tys, więc ręcznie jest to nierealne....

Jak najbardziej realne smile.gif Polecam ten link: lista miast by GUS. Możesz wyeksportować smile.gif do excela, a potem na cvs, a wtedy import chociażby przez phpmyadmin to już prosta sprawa smile.gifsmile.gif


--------------------
Pozdrawiam,
Maxiu
Go to the top of the page
+Quote Post
nexis
post
Post #9





Grupa: Zarejestrowani
Postów: 1 012
Pomógł: 109
Dołączył: 26.09.2003
Skąd: nexis.pl

Ostrzeżenie: (0%)
-----


Ja korzystam z listy udostępnionej w Wikiźródłach. Wystarczy do tego napisać prosty parser i zrobić z danymi co tylko zechcesz.

U mnie struktura w formie drzewa (województwo -> powiat -> miejscowość) posiada obecnie 3 770 rekordów, a lista kodów pocztowych przypisanych do poszczególnych miejscowości 22 089. W bazie MySQL (MyISAM) waży to niecałe 750 kB.

Ten post edytował nexis 10.02.2009, 23:30:17


--------------------
Zend Certified Engineer

Kliknij POMÓGŁ jeśli moja odpowiedź okazała się użyteczna!
Go to the top of the page
+Quote Post
Czadus
post
Post #10





Grupa: Zarejestrowani
Postów: 164
Pomógł: 4
Dołączył: 29.08.2008

Ostrzeżenie: (0%)
-----


A czy jest możliwość, byś mi udostępnił taką bazę?? Zaoszczędziłoby mi to trochę pracy??
Go to the top of the page
+Quote Post
MMX3
post
Post #11





Grupa: Zarejestrowani
Postów: 155
Pomógł: 9
Dołączył: 26.01.2004
Skąd: Poznań

Ostrzeżenie: (0%)
-----


no to jest 30 minut roboty stary my tu jesteśmy żeby cie nakierować na rozwiązanie a nie odwalić za ciebie brudną robotę.


--------------------
Go to the top of the page
+Quote Post
ayeo
post
Post #12





Grupa: Przyjaciele php.pl
Postów: 1 202
Pomógł: 117
Dołączył: 13.04.2007
Skąd: 127.0.0.1

Ostrzeżenie: (0%)
-----


Wszystkich miejscowości w Polsce jest około (niecałe) 53k. Nie wiem skąd masz dane o ponad 200. Jednak większości nie znajdziesz na Google Maps bo są za małe.

Pozdrawiam!


--------------------
Go to the top of the page
+Quote Post
graft
post
Post #13





Grupa: Zarejestrowani
Postów: 110
Pomógł: 0
Dołączył: 24.03.2007

Ostrzeżenie: (0%)
-----


a czy jest możliwość pobrania współrzędnych w czasie rzeczywistym? SOrry jeśli pytanie wydaje się głupie, ale dopiero co ruszyłem z tematem GMaps.

Mam w bazie miasto+ulica+nr lokalu i chciałbym generować mapki automatycznie....
Go to the top of the page
+Quote Post
ayeo
post
Post #14





Grupa: Przyjaciele php.pl
Postów: 1 202
Pomógł: 117
Dołączył: 13.04.2007
Skąd: 127.0.0.1

Ostrzeżenie: (0%)
-----


Witam!

Możesz pobierać w czasie rzeczywistym. Jedyne ograniczenie to 15k wywołań dziennie. Jak chcesz więcej to musisz gadać z Google. I jeszcze musisz raczej mieć powiat i województow bo niektóre nazwy miast nie są jednoznaczne.

Pozdrawiam!


--------------------
Go to the top of the page
+Quote Post
Czadus
post
Post #15





Grupa: Zarejestrowani
Postów: 164
Pomógł: 4
Dołączył: 29.08.2008

Ostrzeżenie: (0%)
-----


No i robię to wszystko na pętli, z pomocą php, współrzędne otrzymane zapisuję do bazy. Niestety pewnym czasie przestałem otrzymywać z google współrzędne miejsc. Dlaczego?? Może to być związane z kluczem google?? A może inna jest przyczyna?? Może jest jakieś dzienne ograniczenie pobranych danych od nich??
Go to the top of the page
+Quote Post
nexis
post
Post #16





Grupa: Zarejestrowani
Postów: 1 012
Pomógł: 109
Dołączył: 26.09.2003
Skąd: nexis.pl

Ostrzeżenie: (0%)
-----


Odpowiedź masz post wyżej:
Cytat(ayeo @ 24.02.2009, 06:26:23 ) *
Jedyne ograniczenie to 15k wywołań dziennie. Jak chcesz więcej to musisz gadać z Google.

i w oficjalnym Google Maps FAQ!

Ten post edytował nexis 4.03.2009, 22:39:55


--------------------
Zend Certified Engineer

Kliknij POMÓGŁ jeśli moja odpowiedź okazała się użyteczna!
Go to the top of the page
+Quote Post
grzegorz_g
post
Post #17





Grupa: Zarejestrowani
Postów: 259
Pomógł: 0
Dołączył: 26.10.2004

Ostrzeżenie: (0%)
-----


mam pytanie trochę w tym temacie:

czy robił ktoś (czy wogóle jest to do zrobienia) coś na wzór GOOGLE ANALYTICS - nakładka na mapę. Gdzie poprzez jaskrawość kolorów pokazuje się na mapie częstotliwość występowania określonych danych np. ilośc userów z danego miasta.

jak na poniższym zdjęciu


pozdrawiam i czekam na jakieś pomysły smile.gif


--------------------
www.wettradar.com
Go to the top of the page
+Quote Post
thek
post
Post #18





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Kurde... 3 wyrazy napisałem w google i od razu mi wypluło na pierwszym miejscu wynik tego co szukasz :/
Wyniki szukania w google dla frazy "google maps circle" dają jako pierwszy ten wynik -> http://dawsdesign.com/drupal/google_maps_circle_overlay
Czy to naprawdę takie trudne używać google?

Ten post edytował thek 16.01.2010, 19:16:20


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 11:12