Google Map - dinamikusan
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,
■ 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,
Geocoding using JavaScript
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.
Minta
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.
a séma
..akár megye nélkül
ez lett, de nem stimm :)
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:
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 :).
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)
ez lett, de nem stimm :)
onload
Probáld így:
próbálkozás
ezekkel próbálkoztam, végülis az elsőt már megjeleníti vele:
<meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
<script src="http://maps.google.com/maps?file=api&v=2.x&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:
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...
nézd a példát