2015-02-02 2 views
0

Google지도가로드되면 모든 서브맵을로드하는 데 몇 초가 걸립니다. 마커를 변경하려고 할 때마다 모든지도를 다시로드해야합니다. 한 번로드하여 업데이트 할 수 있습니다 동적 마커?Google지도의 마커 만 업데이트하십시오.

function initialize(markers) { 
    console.log(markers); 
    var mapOptions = { 
    zoom: 7, 
    center: new google.maps.LatLng(40.4378271,-3.6795367) 
    } 
    var map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions); 
    var j=0; 
    for (var i=0;i<((markers.length)-3);i=i+3){ 
     var marker = new google.maps.Marker({ 
       position: new google.maps.LatLng(markers[i],markers[i+1]), 
       map: map, 
      icon: 'http://chart.apis.google.com/chart?chst=d_map_pin_letter&chld='+j+'|FE6256|000000', 
       title: markers[i+2] 
     }); 
     j++; 
} 
} 
google.maps.event.addDomListener(window, 'load', initialize(markers())); 

답변

0

initialize 내부 접근 어디 당신은 어딘가에지도 인스턴스를 저장해야합니다, 당신은 더 전화에지도를 다시 사용 할 수 있습니다 만 이전 마커를 제거하고 새로운 마커를 작성하여야한다.

샘플 (지도-사업부의 속성으로 저장 맵) :

function initialize(markers) { 

    var node = document.getElementById('map-canvas'), 
     j = 0, 
     marker; 

    //create a single Map-instance and store it as property of the map-container 
    if (!node.map) { 
     //create a MVCObject, used for binding of the markers map-property 
     node.mvc = new google.maps.MVCObject(); 
     //the map 
     node.map = new google.maps.Map(node, { 
      zoom: 2, 
      center: new google.maps.LatLng(40.4378271, -3.6795367) 
     }); 

    } 
    //this will remove previous markers 
    node.mvc.set('map', null); 
    node.mvc.set('map', node.map); 


    for (var i = 0; i < ((markers.length) - 3); i = i + 3) { 
     var marker = new google.maps.Marker({ 
      position: new google.maps.LatLng(markers[i], markers[i + 1]), 
      map: node.map, 
      icon: 'http://chart.apis.google.com/chart?chst=d_map_pin_letter&chld=' + 
        j + '|FE6256|000000', 
      title: markers[i + 2] 
     }); 
     //bind the markers map-property 
     marker.bindTo('map', node.mvc, 'map', true); 


     google.maps.event.addListener(marker, 'map_changed', function() { 
      //remove the binding when map has been set to null 
      if (!this.getMap()) { 
       this.unbind('map'); 
      } 
     }); 

     j++; 
    } 
} 

데모 : http://jsfiddle.net/doktormolle/ns7j3sx0/