Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript][MySQL][PHP]Mapa Google pobieranie danych z bazy...
Forum PHP.pl > Forum > Przedszkole
nawasaqi
Witam serdecznie przerobiłem sobie taki skrypt by pobierał mi dane dla markerów z bazy danych:

  1. <html xmlns="http://www.w3.org/1999/xhtml">
  2. <head>
  3. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  4. <title>Mapka próbna...</title>
  5. <script src="http://maps.google.com/maps/api/js?sensor=false" type="text/javascript"></script>
  6. </head>
  7. <body onload="mapaStart()">
  8. <script type="text/javascript">
  9.  
  10. var mapa;
  11. var dymek = new google.maps.InfoWindow(); // zmienna globalna
  12.  
  13. function dodajMarker(lat,lng,txt)
  14. {
  15. // tworzymy marker
  16. var opcjeMarkera =
  17. {
  18. position: new google.maps.LatLng(lat,lng),
  19. map: mapa
  20. }
  21. var marker = new google.maps.Marker(opcjeMarkera);
  22. marker.txt=txt;
  23.  
  24. google.maps.event.addListener(marker,"click",function()
  25. {
  26. dymek.setContent(marker.txt);
  27. dymek.open(mapa,marker);
  28. });
  29. return marker;
  30. }
  31.  
  32. function mapaStart()
  33. {
  34. var wspolrzedne = new google.maps.LatLng(52.04, 19.28);
  35. var opcjeMapy = {
  36. zoom: 6,
  37. center: wspolrzedne,
  38. mapTypeId: google.maps.MapTypeId.ROADMAP
  39. };
  40.  
  41. mapa = new google.maps.Map(document.getElementById("mapka"), opcjeMapy);
  42. <?php
  43. $db = new mysqli('localhost', 'root', '', 'dane');
  44. $db -> query("SET CHARSET utf8");
  45. $db -> query("SET NAMES 'UTF-8' COLLATE 'utf8_polish_ci'");
  46. $ile = "SELECT count(*) AS ilosc FROM geolokalizacja";
  47. $zapytanie = "SELECT * FROM geolokalizacja";
  48. $ile1 = $db->query($ile);
  49. $wynik = $db->query($zapytanie);
  50. $ilosc = $ile1->fetch_assoc();
  51.  
  52.  
  53. $i=$ilosc['ilosc'];
  54. $w=1;
  55.  
  56. while ($baza = $wynik->fetch_assoc())
  57.  
  58. { echo("var marker".$w++." = dodajMarker(".$baza['Lat'].",".$baza['Lng'].",'".$baza['nazwa']."'); "); }
  59.  
  60.  
  61.  
  62. ?>
  63.  
  64.  
  65.  
  66.  
  67.  
  68. }
  69. </script>
  70.  
  71.  
  72.  
  73.  
  74.  
  75.  
  76.  
  77.  
  78.  
  79.  
  80.  
  81. <div id="mapka" style="width: 100%; height: 500px; border: 1px solid black; background: gray;">
  82. <!-- tu będzie mapa -->
  83. </div>
  84. <p id="info">
  85. Wiele markerów, każdy z własnym opisem.
  86. </p>
  87. </body>
  88. </html>




I wszystko super się wyświetla tylko mam problem z napisami w chmurce. Mianowicie jak w bazie mam np. baza['nazwa']='FIRMA XYZ' To w chmurce mi wyświetla tylko FIRMA zamiast FIRMA XYZ Po prostu jak jest spacja to do spacji wyświetli wszystko a po już nie wyświetla... w czym może być problem questionmark.gif
nospor
A patrzyles w zrodle strony czy o to:
{ echo("var marker".$w++." = dodajMarker(".$baza['Lat'].",".$baza['Lng'].",'".$baza['nazwa']."'); "); }
wygenerowalo poprawnu kod js?
nawasaqi
Patrzyłem o dziwo teraz odkryłem, że jak dokleję jakiś tekst do zmiennej np:
{ echo("var marker".$w++." = dodajMarker(".$baza['Lat'].",".$baza['Lng'].",'<strong>NAZWA FIRMY:</strong><br /> ".$baza['nazwa'].' <br />"'); "); }

To $baza['nazwa'] wyświetla mi się poprawnie obojętnie ile jest spacji w nazwie... ot taki chochlik... wink.gif

A mam pytanie jeszcze może ktoś mi doradzi mam w bazie ponad 4000 rekordów gdzie mam podane tylko [nazwa],[miasto],[ulica_wraz_numerem_budynku] oraz [telefon] i teraz pytanie jak najszybciej przeprowadzić geolokalizację by zapisało mi do bazy pozycje wartości Lat i Lng dla każdego rekordu??
gogomania
Cytat(nawasaqi @ 20.02.2014, 13:02:48 ) *
...mam w bazie ponad 4000 rekordów gdzie mam podane tylko [nazwa],[miasto],[ulica_wraz_numerem_budynku] oraz [telefon] i teraz pytanie jak najszybciej przeprowadzić geolokalizację by zapisało mi do bazy pozycje wartości Lat i Lng dla każdego rekordu??


Ja szybszego sposobu na to nie znam niż:
- eksport do excela,
- ręczne wyszukanie lat i long przez googlemaps,
- wpisanie koordynatów do tabelki,
- import do bazy.

Zrobiłem w ten sposób 800 rekordów. Nawet sprawnie to idzie.

Możesz użyć: http://pl.mygeoposition.com/ ale też trzeba ręcznie wpisać. Może ktoś zna szybsze rozwiązanie...
nawasaqi
Ręczne wyszukiwanie?? o matko... najszybsze rozwiązanie masz poniżej jakie wymyśliłem wink.gif Jedyny minus 2.500 na IP dziennie ale jak ktoś ma GSM albo zmienne IP to wystarczy się rozłączyć i połączyć na nowo wink.gif Oczywiście zrobić sobie pętlą zapis i odczyt z bazy i jazda wink.gif


  1. <?php
  2. $googlezap = 'http://maps.google.com/maps/api/geocode/json?address=Katowice+Warszawska+4&sensor=false&region=PL';
  3. $strona = file_get_contents($googlezap);
  4. $tablica = json_decode($strona,true);
  5.  
  6.  
  7.  
  8. echo ($tablica['results'][0]['geometry']['location']['lat'].'<br />');
  9. echo ($tablica['results'][0]['geometry']['location']['lng']);
  10.  
  11.  
  12.  
  13. ?>



Ale mam inny problem Panowie nie gustuje w javascript i dopiero zacząłem od podstaw się uczyć go... chcę sobie zmienić ikony markerów określając ich źródłowy adres www do ikony. I poniższy przykład czyli chciałbym zdefiniować w opcjach markera że ikona1 będzie miałą obraze X ikona2 obrazek Y... I określając potem już w linijce dodajmarker tylko nazwe takiej zmiennej podstawiałaby dla tego markera już zmienioną ikonę...

  1. <html xmlns="http://www.w3.org/1999/xhtml">
  2. <head>
  3. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  4. <title>Mapka próbna...</title>
  5. <script src="http://maps.google.com/maps/api/js?sensor=false" type="text/javascript"></script>
  6. </head>
  7. <body onload="mapaStart()">
  8. <script type="text/javascript">
  9.  
  10. var mapa;
  11. var dymek = new google.maps.InfoWindow();
  12.  
  13.  
  14. function dodajMarker(lat,lng,txt,ico)
  15. {
  16. // tworzymy marker
  17. var opcjeMarkera =
  18. {
  19. position: new google.maps.LatLng(lat,lng),
  20. map: mapa
  21.  
  22. }
  23. var marker = new google.maps.Marker(opcjeMarkera);
  24. marker.txt=txt;
  25.  
  26. google.maps.event.addListener(marker,"click",function()
  27. {
  28. dymek.setContent(marker.txt);
  29. dymek.open(mapa,marker);
  30. });
  31.  
  32. var ikona1 = new google.maps.MarkerImage("http://maps.google.com/mapfiles/kml/pal2/icon38.png");
  33. var ikona2 = new google.maps.MarkerImage("http://maps.google.com/mapfiles/kml/pal4/icon23.png");
  34. var ikona3 = new google.maps.MarkerImage("http://maps.google.com/mapfiles/kml/pal3/icon13.png");
  35.  
  36.  
  37. return marker;
  38. }
  39.  
  40. function mapaStart()
  41. {
  42. var wspolrzedne = new google.maps.LatLng(52.04, 19.28);
  43. var opcjeMapy = {
  44. zoom: 6,
  45. center: wspolrzedne,
  46. mapTypeId: google.maps.MapTypeId.ROADMAP
  47. };
  48.  
  49. mapa = new google.maps.Map(document.getElementById("mapka"), opcjeMapy);
  50.  
  51.  
  52.  
  53.  
  54.  
  55.  
  56. var marker1 = dodajMarker(53.439068183003684,14.518346786499023,'<strong>NAZWA FIRMY:</strong><br /> FIRMA A <br />',ikona1);
  57. var marker2 = dodajMarker(53.42235902258507,14.489099979400635,'<strong>NAZWA FIRMY:</strong><br /> FIRMA B <br />',ikona2);
  58. var marker3 = dodajMarker(54.439068183003684,15.518346786499023,'<strong>NAZWA FIRMY:</strong><br /> FIRMA_AD <br />',ikona3);
  59. var marker4 = dodajMarker(52.439068183003684,18.518346786499023,'<strong>NAZWA FIRMY:</strong><br /> FIRMA_ADS <br />',ikona3);
  60.  
  61.  
  62.  
  63.  
  64.  
  65. }
  66. </script>
  67.  
  68. <div id="selektor" style="width: 100%; height: 50px; background: green;">
  69. TUTAJ BĘDĄ POLA SELEKCJI
  70. </div>
  71.  
  72. <div id="mapka" style="width: 100%; height: 500px;">
  73. <!-- tu będzie mapa -->
  74. </div>
  75. <p id="info">
  76. Wiele markerów, każdy z własnym opisem i inną zdefiniowaną ikoną.
  77. </p>
  78. </body>
  79. </html>


Może pokrętnie to wytłumaczyłem ale tak jak mówię z JAVSCRIPT to dopiero zaczynam... Z góry dziękuję za pomoc jak zrobić by ta ikona była taka jak ją zdefiniowałem dla każdego markera.
Damonsson
http://jsfiddle.net/d2AX6/1/
nawasaqi
Witam dziękuje za odpowiedź super o to mi chodziło jednakże teraz mam tylko okno informacyjne (chmurke) jedynie na ostatnim markerze obojętnie na który kliknę... to zwsze chmurka pokazuje się na ostatnim markerze z jego opisem...
Damonsson
http://jsfiddle.net/d2AX6/2/
PYJTER
Przepraszam że tak się podepnę pod temat i wtrącę... ale śledzę go bo jest ciekawy i ten ostatni kod który został podany jest oki ale u @nawasaqi opisy znikały po kliknięciu na każdy kolejny marker... a w tym ostatnim rozwiązaniu @Damonsson trzeba że tak powiem je ręcznie zamykać. Także jak zobaczymy opisy 20 markerów to 20 razy trzeba będzie kliknąć na zamknięcie opisu(dymku) żeby sieczki na ekranie sobie nie zrobić... @Damonsson dzięki za poświęcony czas i jeśli znalazłbyś czas to bardzo byłbym wdzięczny za rozwiązanie tego dość upierdliwego defektu... wink.gif
Damonsson
Ehh ludzie, ostatni mój post w tym temacie, to są naprawdę podstawy javascript i temat zasięg zmiennych w tym wypadku.

http://jsfiddle.net/d2AX6/3/
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.