ugrás a tartalomhoz

Google Map - dinamikusan

MSzilveszter · 2007. Május. 14. (H), 19.26
Sziasztok,

kérdezném, hogy valaki tud e segíteni egy összetettebb google map masina létrehozásában.
A lényeg, hogy egy adatbázisban megvan a felhasználó címe, irányítószáma, városa (közép eu., tehát osztrák, szlovák, ukrán, román, horvát, szlovén, cseh, és esetleg lengyen), amit dinamikusan rá kellene helyezni egy google mapra.

Odáig jutottam, hogy bekonfiguráltam a google mapot, fogtam magam, és felpakoltam rá a pontokat, de ha nem csak város, ország adatokat adok meg, hanem pl irszt, vagy mondjuk utcát, akkor kiröhög, hogy nem tud vele mit kezdeni, így minden városból csak egy embert tudtam felpakolni, a többi nem látszott, ami pl budapest esetében kellemetlen.

Akár fizetni is tudok annak, aki segítséget nyújt ebben a kérdésben működőképesen.

Üdv.:

Sly,
 
1

Geocoding using JavaScript

Marcell · 2007. Május. 14. (H), 20.44
Most gondolom a Google Maps beépíthető API-járól van szó! Nagyon jó játék, én is imádom! :)

Próbáltad már ezt? Geocoding using JavaScript

Ha megnézed az első példát, és jó formátumban írod be a címet, elvileg rögtön megtalálja és meg is mutatja a térképen (saját címemmel nekem sikerült, viszont pl Kelet-Romániát nem tudom mennyire tudja utca szerint lekeresni). Innen már csak egy apró lépés kinyerni a koordinátákat, hiszen benne van útközben a point változóban, amivel aztán gyerekjáték később bejelölni a térképen, akár tucatszámra is.

Megjegyzem, ha gyakran kérik le az adatokat, megéri rögtön a koordinátákat (is) tárolni az adatbázisban.
2

Minta

MSzilveszter · 2007. Május. 14. (H), 20.49
A Gecoding Using JavaScript nevű részt használom én is fel, azzal nincs gond, le tudom generálni a pontokat.
Tudsz mutatni mintát arra, hogy milyen formában írtad be a címet? Elég sok féle módon próbáltam, mindig hibával jött vissza.
Előre is köszi.
3

a séma

Marcell · 2007. Május. 14. (H), 20.58
Pontosan úgy, ahogy ő is a példában. Ez pl működik: "2000 Szentendre, Fő tér, Pest, HU", tehát "irányítószám város, utca, megye, országkód"
4

..akár megye nélkül

Marcell · 2007. Május. 14. (H), 21.04
..hozzáteszem a megyét akár el is hagyhatod (az talán nincs is meg Neked, mint információ), a maradék adatot viszont nyilván ismered. Tehát pl: "2000 Szentendre, Kálvária, HU" kiadja az utcát, ahol iskolába jártam :)
5

ez lett, de nem stimm :)

MSzilveszter · 2007. Május. 15. (K), 01.03
Hali,

köszi, összehoztam, mostmár a cím formátuma jó, mégse jelenik meg, íme a forráskód, hátha valaki frissebb szemmel nálam többet lát:

a headben, és a body tagban:
<script src="http://maps.google.com/maps?file=api&amp;v=2.x&amp;key=ABQIAAAA7IJf9TN36Boq_scS0b_8exS4SdQFnSVV3lHiSXF99r6tpabdoBRgVne_YIDBv_APJBbHE5PsEZAiWg"
12 type="text/javascript"></script>
13 <script type="text/javascript">
14 //<![CDATA[
15
16 var map = null;
17 var geocoder = null;
18
19 function load() {
20 map = new GMap2(document.getElementById("map"));
21 map.addControl(new GSmallMapControl());
22 map.addControl(new GMapTypeControl());
23 map.setCenter(new GLatLng(47.0, 18.6), 7);
24 geocoder = new GClientGeocoder();
25 } //]]>
26</script>
27
28</HEAD>
29<link href="/css/styles.css" rel="stylesheet" type="text/css">
30<body bgcolor="#FFFFFF" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0" onload="load()">


és a dinamikus részben ezt generálom, a functiont nem, természetesen :).
164 <script type="text/javascript">
165 function addAddressToMap(response) {
166 if(!response || response.Status.code != 200) {
167 alert("Bocsi nincs ilyen koordinátám.");ű
168 } else {
169 palce = response.Placemark[0];
170 point = new GLatLng(place.Point.coordinates[1], place.Point.coordinates[0]);
171 marker = new GMarker(point);
172 map.addOverlay(marker);
173 }
174 }
175
176 var address1 = "2119 Pécel, Erdei út 6, HU";
177 geocoder.getLocations(address1, addAddressToMap);
178
179 var address2 = "1086 Budapest, Karácsony Sándor utca 20, HU";
180 geocoder.getLocations(address2, addAddressToMap);
181
182 var address3 = "1078 Budapest, Hernád utca, HU";
183 geocoder.getLocations(address3, addAddressToMap);
184
185 var address4 = "1086 Budapest, Karácsony Sándor utca, HU";
186 geocoder.getLocations(address4, addAddressToMap);
187
188 var address5 = "3063 Jobbágyi, Partalja út 22, HU";
189 geocoder.getLocations(address5, addAddressToMap);
190 </script> <div id="map" style="width: 775px; height: 450px"></div>


Hibaüzenetként ezt találom meg, amikor a FireBug megnézi nekem a kódot:
"geocoder has no properties
[Break on this error] var address2 = "1086 Budapest, Karácsony Sándor utca 20, HU";" (line179)
6

ez lett, de nem stimm :)

MSzilveszter · 2007. Május. 15. (K), 01.55
ha valakinek van tipje, megköszönöm azt ;)
7

onload

Peti_ · 2007. Május. 15. (K), 23.58
Az a probléma, hogy még nem jön létre az object. Mivel a body onload után jön létre csak utána lehet használni.
Probáld így:
<script type="text/javascript">
    var oldonload = window.onload;	
    window.onload = function(){
		oldonload();
       cim1
       cim2 ......
    }
</script>
Jó példa
9

próbálkozás

MSzilveszter · 2007. Május. 21. (H), 02.51
Sziasztok,

ezekkel próbálkoztam, végülis az elsőt már megjeleníti vele:

<head>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
    <script src="http://maps.google.com/maps?file=api&amp;v=2.x&amp;key=ABQIAAAA7IJf9TN36Boq_scS0b_8exS4SdQFnSVV3lHiSXF99r6tpabdoBRgVne_YIDBv_APJBbHE5PsEZAiWg" type="text/javascript"></script>
    <script type="text/javascript">
    //<![CDATA[

    var map = null;
    var geocoder = null;

    function load() {
      if (GBrowserIsCompatible()) {
        map = new GMap2(document.getElementById("map"));
        map.setCenter(new GLatLng(47, 18.7), 7);
        geocoder = new GClientGeocoder();
      }
    }

    function showAddress(address) {
      if (geocoder) {
        geocoder.getLatLng(
          address,
          function(point) {
            if (!point) {
              alert(address + " not found");
            } else {
              var marker = new GMarker(point);
              map.addOverlay(marker);
            }
          }
        );
      }
    }
    //]]>
    </script>
  </head>


majd a body részben:
<script type="text/javascript">
var oldonload = window.onload;    
window.onload = function(){
oldonload();
<?php
$user_query = @mysql_query("SELECT user, m_zip, m_city, m_road, l_name, f_name FROM ".$DB['dbase'].".log_datas ORDER BY id DESC");
$i=1;
while($array_user = mysql_fetch_array($user_query))
{
echo('
showAddress("'.
htmlspecialchars($array_user['m_zip']).', '.
htmlspecialchars($array_user['m_city']).', '.
htmlspecialchars($array_user['m_road']).', HU"); return false;
');
$i++;
}
?>
}
</script>
      <div id="map" style="width: 500px; height: 300px"></div>


Utoljára, mikor sikerült (mielött az aznap éjjeli munkámat teljesen ki nem töröltem, ehhez hasonló megoldással működött...
8

nézd a példát

Marcell · 2007. Május. 16. (Sze), 12.11
Még nem néztem bele a kódodba, de: ha megnézed az első dokumentációs példát, ott is többet lehet bejelölni (tehát ami a problémád, ott működik, megadsz 3 egyazon városba tartozó címet egymás után, és mind a 3-nak a jelölője ott marad). Magyarán csak annak a példakódját kell kimásolni és kicsit kipofozni...