2016-04-03 9 views
0

Tıklatıldığında, verilen bir koordinatlara Google haritasının yerleştirileceği hrefs'leri dinamik olarak eklemeyi deniyorum. Aşağıdaki kod, başarılı bir şekilde haritayı kaydeden href bağlantılarını yaratır - ancak en son oluşturulan çemberin bulunduğu yere doğru kaydırmaya devam eder.Eşzamanlı olarak benzersiz Google Map latLng'e kaydırma yapan hrefs'leri dinamik olarak yaratın

Kapalı IIFE içindeki mevcut koordinatları koruyacak umuduyla kapama panToToir'i ekledim, ancak böyle bir şans yok. Sizce en iyi stratejim hangisiydi? Teşekkürler bir ton!

Not: Bu, her zaman, bir yanıt sunucudan her yanıt geldiğinde daire oluşturan bir asynch çağrısı ile zincirlenir.

var text = 'Hello World!'; 
// Hoisting the panToCircle up here, as Chrome was giving me undefined ref errors when initializing it in linkToCircle. 
var panToCircle = function(){}; 
var rgb = [100,100,100]; 
createCircle(); 

function createCircle(){ 
    var color = 'RGB(' + rgb.toString() + ')';      
    var myCircle = initCircle(); 
    linkToCircle(); 

    function linkToCircle(){ 
     var a = document.createElement('a'); 
     a.innerHTML = text + "<br><br>"; 
     a.style.color = color; 

     panToCircle = function(){ 
      // Defining center in here, as putting a center in as an argument to the href function reclasses the center as a string, not a latLng 
      var center = myCircle.getCenter(); 
      (function panNow(cen){ 
       map.panTo(cen); 
      })(center); 
     } 

     a.href = 'javascript:panToCircle();' 
     document.getElementById('text-div').appendChild(a); 
     } 
} 

cevap

0

Cool, gerçekten basit bir düzeltme çalışması yaptı, sadece bir adım geri almak ve diğer seçenekleri düşünmek zorunda kaldı. Geçerli koordinatlardan bir dize biçimlendirdim ve onu href değerine birleştirdim.

function linkToCircle(){ 
     var a = document.createElement('a'); 
     a.innerHTML = text + "<br><br>"; 
     a.style.color = color; 

     panToCircle = function(latLng){ 
      alert(latLng) 
      var cen = {'lat': Number(latLng[0]), 'lng': Number(latLng[1])};    
      map.panTo(cen); 
     } 

     // Just had to do an eval-ish thing to get it to take the current coordinates by 
     // formatting the string correctly, as an array. I had tried something similar 
     // before, but it was rejecting the arguments as a comma-separated list. 
     var centerString = center.lat.toString() + ',' + center.lng.toString(); 
     a.href = 'javascript:panToCircle([' + centerString + ']);' 
     document.getElementById('text-div').appendChild(a); 

    } 

Lütfen kapatma girişimin neden başarısız olduğuyla ilgili bir açıklamada bulunmaktan çekinmeyin. Kapanışlar benim için yeni (genel olarak js için yeniyim), daha fazla bilgi edinmek isterim. Kapama elemanını ilk gönderiye açıklayan bir cevabı kabul eder. Teşekkürler!