Autor Zpráva
tmvitek
Profil
Zdravím, mám následující problém. Na webu http://zdravepotraviny.info/ bych rád v mapě zobrazoval více ikon, než jich tam je teď. Ale nemohu se k tomu nějak dopracovat. V databázi mám uloženo cca 50 adres, ty pomocí php vydoluju všechny, předám je do javascriptu a zobrazí se jich pouze 11. Co mám špatně? A dále bych se rád zeptal, jak mohu zobrazit místo této ikonky (s tím písmenem) pouze klasickou ikonku bez ničeho? Ikdyž to zatím není tak důležité, teĎ hlavně potřebuji zobrazit všechny ikonky. Díky Tomáš


<? 
// ....... nějaký předchozí kód

$data = array();
while($row = mysql_fetch_array($q))
  $data[$row['nadpis2']] = array(
      'jmeno' => $row['jmeno'],
      'adresa' => $row['mesto'],
      'tel' => $row['telefon'],
      'ulice' => $row['ulice'],
      'text' => $row['text'],
      'mail' => $row['mail'],
      'p_cislo' => $row['p_cislo'],
      'mesto' => $row['mesto'],
      'psc' => $row['pcs'],
      'datum' => $row['datum'],
      'kategorie' => $row['kategorie'],
      'cas' => $row['cas'],
      'cislo' => $row['cislo'],
      'nadpis' => $row['nadpis'],
      
  );

?>

<script>
function adresa() {

var data = <? echo json_encode($data) ?>;
var jmeno;
var mezera =" ";
var odkaz ='<a href="http://zdravepotraviny.info/inzeraty/';
var odkaz1='.php">';
var odkaz2 ='</a>';
var lomeno='/';
for(nadpis2 in data)

showAddress(data[nadpis2].mesto + mezera  + data[nadpis2].ulice + mezera +data[nadpis2].p_cislo, 0 ,odkaz +data[nadpis2].kategorie +  lomeno +(nadpis2) +odkaz1 +data[nadpis2].nadpis + odkaz2,(data[nadpis2].jmeno));
}
</script>

<script type="text/javascript">
var map = null;
var geocoder = new GClientGeocoder();
var zoom = 7;
// definice vzhledu ikony (špendlíku) na mapě
var baseIcon = new GIcon(G_DEFAULT_ICON);
baseIcon.shadow = "http://www.google.com/mapfiles/shadow50.png";
baseIcon.shadow = "";
baseIcon.iconSize = new GSize(20, 34);
baseIcon.shadowSize = new GSize(37, 34);
baseIcon.iconAnchor = new GPoint(9, 34);
baseIcon.infoWindowAnchor = new GPoint(9, 2);

function initialize() {
  // zobrazení základní prázdné mapy
  if (GBrowserIsCompatible()) {
    map = new GMap2(document.getElementById("moje_mapa"));
    map.setCenter(new GLatLng(50.769396,15.058115), zoom);
    map.setUIToDefault();
  }
}


function createMarker(point, index, address, name, mark) {
  // Vytvoření ikony (špendlíku) s písmenkem
  var letter = String.fromCharCode("A".charCodeAt(0) + index);
  var letteredIcon = new GIcon(baseIcon);
  letteredIcon.image = "http://www.google.com/mapfiles/marker" + letter + ".png";
  
  //vycentrování 
  
  
  // Vytvoření GMarkerOptions objektu
  markerOptions = { icon:letteredIcon };
  map.setCenter(point, zoom);
  var marker = new GMarker(point, markerOptions);
  GEvent.addListener(marker, "click", function() {
    marker.openInfoWindowHtml("<b>" + name + "</b><br />" + address + "<br /><i>" + mark + "</i>");
  });
  return marker;
}


function markers() {
    
    


   adresa();
  
  
                                                                  

   map.setCenter(new GLatLng(50.769396,15.058115), zoom);

}


function showAddress(address, index, name, mark) {
  geocoder.getLatLng( //funkce ktera z adresy udela souradnice 
    address, 
    function(point){ 
      if (point) {
        map.addOverlay(createMarker(point, index, address, name, mark)); 
      } 
    } 
  );
}

</script>
tmvitek
Profil
Tak na změnu ikonek jsem už přišel stačilo opravit toto
var baseIcon = new GIcon(G_DEFAULT_ICON);

baseIcon.image= "http://maps.google.com/intl/en_us/mapfiles/ms/micons/blue-dot.png";
baseIcon.iconSize = new GSize(40, 34);
baseIcon.shadowSize = new GSize(37, 34);
baseIcon.iconAnchor = new GPoint(9, 34);
baseIcon.infoWindowAnchor = new GPoint(9, 2);
 


A na zobrazení více ikonek na mapě jsem se dočetl, že údajně potřebuji něco jako toto, ale jak to mám upravit, aby to správně fungovalo pro můj případ? http://www.zulien.sk/en/profesional/google-maps-geocoder-getlatlng-limitation-problem/46
// add markers in a loop
>for( var i in addressArray ) {
// delay for each marker
timeout = parseInt( i ) * 180;
window.setTimeout( function() {
geocoder.getLatLng( addressArray.pop(), function(point) {

if (point) { map.addOverlay( new GMarker(point)); }
});
}, timeout);
}


Mlj kód místo tohoto - jak pozměnit?
function showAddress(address, index, name, mark) {
  geocoder.getLatLng( //funkce ktera z adresy udela souradnice 
    address, 
    function(point){ 
      if (point) {
        map.addOverlay(createMarker(point, index, address, name, mark)); 
      } 
    } 
  );
}
tmvitek
Profil
Tož nevíte náhodou někdo?
Chamurappi
Profil
Reaguji na tmvitka:
Dovolím si připomenout, že používáš starší verzi API, kterou chtěl Google už letos v květnu vypnout.
Funkci adresa() voláš dvakrát, poprvé zřejmě v době, kdy ještě není vše inicializováno. Jelikož geocoder.getLatLng pracuje asynchronně, některé odpovědi mohou přijít dřív a některé později. Nedivil bych se také, kdyby existovalo omezení na počet požadavků na souřadnice za sekundu, padesát dotazů je dost. Připadá mi to takové … velmi hloupé. Ony se ty souřadnice adres pravidelně stěhují, že je nutné se na ně pokaždé u každého návštěvníka ptát znovu? Proč si neuložíš do databáze přímo souřadnice zjištěné jednorázově?
tmvitek
Profil
To už mě také nepadlo, ale na to pořádně bohužel nevím jak. Tož ještě to půjdu nějak zkusit. Ale díky!
tmvitek
Profil
Tak anšel jsem si jeden php script (teda našel jsem jich daleko více a ani jeden mi nefunguje)
První script
<?
$a= "Příčná 54, 59401, Velké Meziříčí , Czech republic";
$address = urlencode($a);
$link = "http://maps.google.com/maps/api/geocode/xml?address=".$address."&sensor=false";
$file = file_get_contents($link);

if(!$file) {
echo "Err: No access to Google service: ".$a."<br/>\n";
}else {
$get = simplexml_load_string($file);

if ($get->status == "OK") {
$lat = (float) $get->result->geometry->location->lat;
$long = (float) $get->result->geometry->location->lng;
echo "lat: ".$lat."; long: ".$long."; ".$a."<br/>\n";
}else{
echo "Err: address not found: ".$a."<br/>\n";
}
}
Ten nejede - viz http://zdravepotraviny.info/mapa3.php

Další jsem našel tento


<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
<title>Google Maps API Example: Simple Geocoding</title>
<script type="text/javascript" src="http://www.google.com/jsapi?key=AIzaSyCT-BkWALDyh2OuvJdk1Os7-16UdkD27kE"></script>
<script type="text/javascript">
google.load("maps", "2");

var mapa = null;
var geocoder = null;

function spust() {
mapa = new google.maps.Map2(document.getElementById("pmapa"));
mapa.setCenter(new google.maps.LatLng(49.79545,15.732422),7);
geocoder = new google.maps.ClientGeocoder();
}

function ukaz(adresa) {
if (adresa != ""){
if (geocoder) {
geocoder.getLatLng(adresa, function(misto) {
if (!misto) {
alert(adresa + " nenalezena!");
}
else {
document.write(misto);
mapa.setCenter(misto, 13);
var znacka = new google.maps.Marker(misto);
mapa.addOverlay(znacka);
znacka.openInfoWindowHtml(adresa);
}
}
);
}
}
else {alert("Zadejte hledanou adresu!");}
}
</script>
</head>

<body onload="spust()" onunload="google.maps.Unload()">
<form action="#" onsubmit="ukaz(this.adresa.value); return false">
<p>
<input type="text" size="60" name="adresa" value="" />
<input type="submit" value="Ukaz!" />
</p>
<div id="pmapa" style="width: 500px; height: 500px"></div>
</form>
</body>
</html>
ukázka http://zdravepotraviny.info/mapa2.php tento už mi sice vypíše gps souřadnice, ale až poté co kliknu 2x na ukaz, a navíc mi je ukáže na stejné adrese, nenapdá vás někoho jak to upravit abych klikl na ukaz a zorbazilo mi to (nejlépe na jiné stránce) hnedka souřadnice? Díky

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: