Autor Zpráva
Peet
Profil
Dobrý den, používám google maps api a řeším následující.

funkce initialize() se postará o zobrazení mapy s nějakým středem.
funkce createMarker() se postará o přidání markeru na vytvořenou mapu a vrátí latitude + longtitude
funkce myPosition() se postará o přidání markeru mé aktuální polohy a vrátí latitude + longtitude
funkce createPolyline() vytvoří čáru mezi dvěma body, dvě vstupní hodnoty jsou LatLng vrácené z předchozích funkcí

Problém nástává ve chvíly kdy se snažím vytvořit čáru. každá funkce vytvoří nějaký objekt a poté ho přidá k objektu map, když vytvářím markery tak funkce createMarker() VŽDY zná objekt map ale jakmile se pokusím přidat čáru ve funkci createPolyline() tak mi firebug hlásí: 'map is not defined'.

Pokud ale dám do funkce createPolyline() skript na vytvoření Markeru tak vše funguje. Vůbec nevím kde se objekt ztratí nebo kde vlastě nastává chyba. Kdyby někdo na něco přišel budu moc rád.

Přikládám JS soubor a soubor ve kterém mapu vytvářím.

//JAVASCRIPT
//MAPS
       
//funkce která převede adresu na latlng a nastaví ji na center mapy
function initialize(address,typ,zoom) {  
 
    geocoder = new google.maps.Geocoder(); // creating a new geocode object
    
      geocoder.geocode( { 'address': address}, function(results, status){    
          lokace = results[0].geometry.location;
          centerLatLng=new google.maps.LatLng(lokace.lat(),lokace.lng());
           
          showMap(typ,zoom);
      
      });    
}
 
function showMap(typ,zoom){
 
//Vykreslení mapy    
    var myOptions = {
      zoom: zoom,
      center: centerLatLng,
      mapTypeId: typ
    };
    
    map = new google.maps.Map(document.getElementById('map'), myOptions);
    
    map.setTilt(45);
}
    
 
//funkce která vytvoří marker pro danou adresu a vrátí latlng
function createMarker(address,popis,animace){
    geocoder = new google.maps.Geocoder(); // creating a new geocode object
    
      geocoder.geocode( { 'address': address}, function(results, status){
      
      if (status == google.maps.GeocoderStatus.OK){
          
          lokace = results[0].geometry.location;
          latlng=new google.maps.LatLng(lokace.lat(),lokace.lng()); 
          
          var marker_options={
          position: latlng,
          icon: "http://neco.cz/icon.jpg",
          title: popis
          }
    
        var marker=new google.maps.Marker(marker_options);         
        marker.setMap(map);    
          if(animace=="BOUNCE")
            marker.setAnimation(google.maps.Animation.BOUNCE);
            
        return latlng;
            
      }
      });
}
 
//funkce která vytvoří marker z mé polohy a vrátí latlng
function myPosition(){
  if(navigator.geolocation) {
    browserSupportFlag = true;
    navigator.geolocation.getCurrentPosition(function(position) {
      latlng = new google.maps.LatLng(position.coords.latitude,position.coords.longitude);
      
          var marker_options={
          position: latlng,
          icon: "http://neco.cz/icon.jpg",
          title: "Zde se nacházím"
          }
    
        var marker=new google.maps.Marker(marker_options);         
        marker.setMap(map);
        
        return latlng;    
      
    });
  }
  // Browser doesn't support Geolocation
  else {
    alert("Zjištění polohy selhalo, zkuste obnovit stránku");
  }
}
 
//vykreslení čáry mezi dvěma body
function createPolyline(address1,address2){
        
    points=[
      new google.maps.LatLng(address1),
      new google.maps.LatLng(address2)      
    ];
  
      var polyline = new google.maps.Polyline({
      path: points,
      strokeColor: "#ea991b",
      strokeWeight: 2
    });
    polyline.setMap(map);
      
}


SOUBOR KTERÝ VOLÁ MAPU
<script>
initialize("Praha","roadmap",11);
 
var my=myPosition();
var secondPosition=createMarker("Brno","Popis","BOUNCE");
 
createPolyline(my,secondPosition);
 
</script>

Kdo rozumí dobře google maps api a byl by ochotnej se na to podívat budu moc rád, nevím jestli dělám chybu na straně api nebo na straně js. Předem moc díky všem
peta
Profil
Zkousel jsi na miste, kde si myslis, ze map existuje napsat alert(map)? Co to psalo?
Protoze, jestli to spravne chapu, tak jsi nepouzil zadny funkcni priklad ze stranek google map, ale snazis se ukuchtit neco vlastniho. Snadno muzes prehlednout, ze tam globalne definuji mapu. A ty tam takovou definici nemas, aspon nevidim.

Script2, zadne var map tam neni.
Script1, zadne var map tam neni.
Ve funkci showMap je mapa definovana jako
map = new google.maps.Map(document.getElementById('map'), myOptions);
a to melo byt ve scriptu 1 nebo by tam mohlo stacit jen var map;, inicializace tam pak spousti showMap.

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: