2016-04-10 15 views
-1

İşaretçilerimi bir XML dosyasından aldığım konumlarla bir Google haritasına taşımaya çalışıyorum. İşaretçileri yaratıyorum ve bunları bir dizide saklamak istiyorum.javascript işaretleyicileri, google maps api 3 içinde tanımlanmamıştır

markerArray[fzg] = marker; 

Ardından yeni konumları okuyorum ve dizideki belirli bir işaretçinin konumunu değiştirmek istiyorum. Her işaretçinin "fzg" adlı benzersiz bir kimliği vardır.

MoveMarker işlevim her zaman diyor: markerArray tanımlanmamış. Sorun

burada

gereksiz parçaları

<!DOCTYPE html > 
<html> 
<head> 
<meta name="viewport" content="initial-scale=1.0, user-scalable=no" /> 
<meta http-equiv="content-type" content="text/html; charset=UTF-8"/> 
<title></title> 
<link href="swu.css" rel="stylesheet" type="text/css"> 
<script src="https://maps.googleapis.com/maps/api/js" type="text/javascript"></script> 
</head> 

<body> 

<div id="map"></div> 

<script type="text/javascript"> 

function initialize() { 
    //map 
    map = new google.maps.Map(document.getElementById("map"), { 
     center: new google.maps.LatLng(48.393866111111, 9.9770183333333), 
     zoom: 16, 
     mapTypeId: 'roadmap' 
     }); 

    //traffic 
    var trafficLayer = new google.maps.TrafficLayer(); 
    trafficLayer.setMap(map); 
} 

markerArray = []; 

function createMarkers() { 

      //for testing without XML file 
      // create for every i 1 marker 

      for (var i = 0; i < 1; i++) { 

       var pos = new google.maps.LatLng(
       48.393866, 9.977018); 

       var marker = new google.maps.Marker({ 
        map: map, 
        position: pos, 
       }); 

       marker.setMap(map); 

       //store marker in the array with index i 
       markerArray[i] = marker; 

      } // end for 

      moveMarker(map, markerArray); 

} // end createMarkers() 


function moveMarker(map, markerArray) { 

     for (var i = 0; i < 1; i++) { 

     //move marker with index i on the map 
     //console says following markerArray is undefined 

     markerArray[i].setPosition(new google.maps.LatLng(48.393860, 9.9770199)); 

     } 
    } 

initialize(); 
createMarkers(); 
setTimeout(moveMarker(), 2500); 
</script> 



</body> 
</html> 

CSS dosyası olmadan tüm kodudur

bulunamıyor:

html, body { 
    height: 100%; 
    font-family: Gotham, "Helvetica Neue", Helvetica, Arial, sans-serif; 
} 

#map { 
    width: 100%; 
    height: 100%; 
} 
+0

Eğer 'markerArray tanımlamak '? Lütfen sorununuzu gösteren [Minimal, Tam, Test Edilebilir ve Okunabilir bir örnek] (http://stackoverflow.com/help/mcve) belirtin. – geocodezip

+0

örneği değiştirdi – Mintzi1980

cevap

0

herhangi kanıtlar olmaksızın moveMarker aradığınız:

setTimeout(moveMarker(), 2500); 

o çalıştığında, markerArray tanımlanmamıştır. Fonksiyon imzadır: Bu adrese

function moveMarker(map, markerArray) 

Seçeneklerden biri olacaktır:

setTimeout(function() { 
    moveMarker(map, markerArray)}, 
    2500); 

kod parçacığı: do

function initialize() { 
 
    //map 
 
    map = new google.maps.Map(document.getElementById("map"), { 
 
    center: new google.maps.LatLng(48.393866111111, 9.9770183333333), 
 
    zoom: 15, 
 
    mapTypeId: 'roadmap' 
 
    }); 
 

 
    //traffic 
 
    var trafficLayer = new google.maps.TrafficLayer(); 
 
    trafficLayer.setMap(map); 
 
} 
 

 
markerArray = []; 
 

 
function createMarkers() { 
 

 
    //for testing without XML file 
 
    // create for every i 1 marker 
 

 
    for (var i = 0; i < 1; i++) { 
 

 
     var pos = new google.maps.LatLng(
 
     48.393866, 9.977018); 
 

 
     var marker = new google.maps.Marker({ 
 
     map: map, 
 
     position: pos, 
 
     }); 
 

 
     marker.setMap(map); 
 

 
     //store marker in the array with index i 
 
     markerArray[i] = marker; 
 

 
    } // end for 
 

 
    moveMarker(map, markerArray); 
 

 
    } // end createMarkers() 
 

 
var increment = 0.001; 
 

 
function moveMarker(map, markerArray) { 
 

 
    for (var i = 0; i < 1; i++) { 
 

 
    //move marker with index i on the map 
 
    //console says following markerArray is undefined 
 
    var position = markerArray[i].getPosition(); 
 
    console.log("move marker " + position.toUrlValue(6)); 
 
    markerArray[i].setPosition(
 
     new google.maps.LatLng(
 
     position.lat(), (position.lng() + increment)) 
 
    ); 
 
    } 
 
    // markerArray[i].setPosition(new google.maps.LatLng(48.393860, 9.9770199)); 
 

 
} 
 

 

 
initialize(); 
 
createMarkers(); 
 
setInterval(function() { 
 
    moveMarker(map, markerArray) 
 
}, 2500);
html, 
 
body { 
 
    height: 100%; 
 
    font-family: Gotham, "Helvetica Neue", Helvetica, Arial, sans-serif; 
 
} 
 
#map { 
 
    width: 100%; 
 
    height: 100%; 
 
}
<script src="https://maps.googleapis.com/maps/api/js"></script> 
 
<div id="map"></div>

1

ikinci işlevine Çağrı iki parametre içerir:

moveMarker(map, markerArray); 

Ama fonksiyonu sadece bir parametre ile ifade edilir:

function moveMarker(map) { 

moveMarker()

markerArray için daha küresel kapsam isteyen ve tanımlanmamış bir değişken bulmaktır.

İlgili konular