2011-05-31 20 views
16

Yüklenen bir haritamız var. Metin kutularından enine ve uzunluğa ulaşan bir işaretçi eklemek istiyorum ve onu şişiremem.Google Maps api V3 güncelleme işareti

Güncelleştirme düğmesine tıkladığımda hiçbir şey olmuyor.

İşte şimdiye kadar benim kod: Bir yerel var aynı adla gölge beri Ayrıca, küresel map referans gerçek harita örneğine set asla

$(document).ready(function() { 
    alert("Dom, dom dom dom dom"); 


var map; 
var marker; 

function initialize() { 
    var myLatlng = new google.maps.LatLng(40.65, -74); 
    var myOptions = { 
     zoom: 2, 
     center: myLatlng, 
     mapTypeId: google.maps.MapTypeId.ROADMAP, 
    } 

    var map = new google.maps.Map(document.getElementById('map_canvas'), myOptions); 
} 



$("#updateMap").click(function(){ 


    var newLatLng = new google.maps.LatLng(lat, lng); 
    marker.setPosition(newLatLng); 

    var lat = parseFloat(document.getElementById('markerLat').value); 
    var lng = parseFloat(document.getElementById('markerLng').value); 
    var newLatLng = new google.maps.LatLng(lat, lng); 


    marker = new google.maps.Marker({ 
     position: newLatLng, 
     map: map, 
     draggable: true 
    }); 


}); 


}); 



// Onload handler to fire off the app. 
google.maps.event.addDomListener(window, 'load', initialize); 

}); 

cevap

29

Güncelleme

.

var map = new google.maps.Map(document.getElementById('map_canvas'), myOptions); 

Bu sadece olması gerektiği (bunlar küresel bir yere set sürece) onlar başlatıldı konum önce işaretleyici konumu için lat ve lng kullandığınız

map = new google.maps.Map(document.getElementById('map_canvas'), myOptions); 

:

var newLatLng = new google.maps.LatLng(lat, lng); 
marker.setPosition(newLatLng); 

Aynı işaretleyicinin konumunu güncellemek ve yeni bir tane oluşturmak istemiyorsanız, Sadece bu yapıyor ould: Eğer var anahtar kelimeyi kullandıkları için

$("#updateMap").click(function(){ 
    var lat = parseFloat(document.getElementById('markerLat').value); 
    var lng = parseFloat(document.getElementById('markerLng').value); 
    var newLatLng = new google.maps.LatLng(lat, lng); 
    marker.setPosition(newLatLng); 
}); 
+0

Teşekkür: takdir D! – Richard

4

Birincisi, initialize işlevinde sen yeni yerel map değişken yaratıyor. Bu değişken initialize dışında görünmez, bu nedenle global değişkeni kullanmak için var kaldırmanız gerekir.

İkinci olarak, tanımlanmadan önce lat ve lng değişkenlerini kullanıyorsunuz.

Üçüncü olarak, tanımlanamadığı zaman değişkeninin yöntemine erişiyor olabilirsiniz.

Bunların hepsi çözdükten sonra kod aşağıdaki gibi görünebilir:

$(document).ready(function() { 
    alert("Dom, dom dom dom dom"); 

    var map; 
    var marker; 

    function initialize() { 
     var myLatlng = new google.maps.LatLng(40.65, -74); 
     var myOptions = { 
      zoom: 2, 
      center: myLatlng, 
      mapTypeId: google.maps.MapTypeId.ROADMAP, 
     } 

     map = new google.maps.Map(document.getElementById('map_canvas'), myOptions); 
    } 

    $("#updateMap").click(function(){ 

    var lat = parseFloat(document.getElementById('markerLat').value); 
    var lng = parseFloat(document.getElementById('markerLng').value); 
    var newLatLng = new google.maps.LatLng(lat, lng); 

    if (marker != undefined) 
     marker.setPosition(newLatLng); 
    else 
     marker = new google.maps.Marker({ 
      position: newLatLng, 
      map: map, 
      draggable: true 
     }); 
    }); 
    // Onload handler to fire off the app. 
    google.maps.event.addDomListener(window, 'load', initialize); 
}); 
İlgili konular