-1

Bunu görmüyorum, eğer birinize bakarsanız hemen ne yapmam gerektiğini söyleyeyim. Şimdi işaretleyicimi yeniden boyutlandırıyorum ancak yalnızca dizinin son belirtecini alıyor.Tüm google harita işaretlerime nasıl erişirim

var locations = [ 
    [{id: 1, lat: 51.523229192354066, lng: 5.139241042480535, content: 'Title A'}], 
    [{id: 2, lat: 51.52309568310267, lng: 5.139251771316594, content: 'Title B'}], 
    [{id: 3, lat: 51.5229888754197, lng: 5.139434161529607, content: 'Title C'}], 
    [{id: 4, lat: 51.52284868995566, lng: 5.139487805709905, content: 'Title D'}], 
    [{id: 5, lat: 51.522715179588666, lng: 5.139670195922918, content: 'Title E'}], 
    [{id: 6, lat: 51.52258166883027, lng: 5.1397989419556325, content: 'Title F'}], 
    [{id: 7, lat: 51.52242813097418, lng: 5.139927687988347, content: 'Title G'}], 
    [{id: 8, lat: 51.52227793039666, lng: 5.139927687988347, content: 'Title H'}], 
    [{id: 9, lat: 51.522625059869696, lng:  5.138688507423467, content: 'Title I'}] 
]; 

for (i = 0; i < locations.length; i++) { 
     var myLatLng = {lat: locations[i][0].lat, lng: locations[i][0].lng}; 

    marker = new google.maps.Marker({ 
     position: myLatLng, 
     icon: icon1, 
     map: map 
    }); 


    map.addListener('zoom_changed', function() { 
     if (map.getZoom() === 17) { 
      marker.icon.scaledSize = new google.maps.Size(32, 32); 
      marker.icon.size = new google.maps.Size(32, 32); 
      marker.setMap(map); 
     } 
     if (map.getZoom() === 18) { 
      console.log(marker[i]); 
      marker.icon.scaledSize = new google.maps.Size(90, 90); 
      marker.icon.size = new google.maps.Size(90, 90); 
      marker.setMap(map); 
     } 
    }); 

i tanımsız [i] .icon işaretleyici erişmeye deneyin: burada

Ben her kod çevrim nesne belirteçlerin dizi çukur. Lütfen bana tüm işaretçileri kullanması için bana yardımcı olabilir. https://jsfiddle.net/sylvanR/a8z0yyeq/10/

+0

Çünkü "marker" dizisi değil; – itzmukeshy7

cevap

1

sorun şudur: Eğer yeni ekleyerek, tüm belirteçler üzerinde döngü ediyoruz İşte

boyutunda tek işaretleyici değişiklik ne olacağını görmek için dışarı ve daha iyi bir görünüm zum için bir keman olduğunu haritanın zoom_changed olayı için olay dinleyicisi. Bu etkinlik dinleyicilerinin her birinde, değişkenine atıfta bulunursunuz. Bu olay dinleyici işlevi, tanımladığınız anda yürütülmez, yalnızca zum açıkça değiştiğinde gerçekleşir. Bu noktada, değişkeni, for döngüsünüzün son yinelemesinde ne olursa olsun eşit olacaktır. setMarkerSize işlevi içinde Bu durumda

for (i = 0; i < locations.length; i++) { 
     var myLatLng = {lat: locations[i][0].lat, lng: locations[i][0].lng}; 

    marker = new google.maps.Marker({ 
     position: myLatLng, 
     icon: icon1, 
     map: map 
    }); 

    setMarkerSize(marker); 
} 

function setMarkerSize(marker) { 
    var icon = marker.icon; 
    map.addListener('zoom_changed', function() { 
     if (map.getZoom() === 16) { 
      icon.scaledSize = new google.maps.Size(15, 15); 
      icon.size = new google.maps.Size(15, 15); 
      marker.setIcon(icon); 
      console.log(marker.icon.size); 
     } 
     if (map.getZoom() === 17) { 
      icon.scaledSize = new google.maps.Size(32, 32); 
      icon.size = new google.maps.Size(32, 32); 
      marker.setIcon(icon); 
      console.log(marker.icon.size); 
     } 
     if (map.getZoom() === 18) { 
      icon.scaledSize = new google.maps.Size(90, 90); 
      icon.size = new google.maps.Size(90, 90); 
      marker.setIcon(icon); 
      console.log(marker.icon.size); 
     } 
    }); 
} 

, her zaman işlevi çağırmak farklı olacaktır yerel bir değişkendir:

Bunun yerine nasıl böyle kurulum bu olay dinleyicisi, bir şeyleri değiştirmem gerektiğini .

+0

Belki benim kemanda düzenleyebilir misin: https://jsfiddle.net/sylvanR/a8z0yyeq/10/ Çünkü benimle çalışmıyor – Sreinieren

+0

Eğer oturum açarsam konsolda doğru boyutu görüyorum, ancak simge değil değişen boyut. – Sreinieren

+0

'icon1' öğesini nerede oluşturuyorsunuz? Özellikleri doğrudan işaretleyicinin geçerli simgesine ayarlamak yerine, ihtiyacınız olan boyutu ve ölçeklendirmeyi kullanarak yeni bir simgeyle 'marker.setIcon (...)' kullanmanız gerekebilir. – duncan