2011-07-07 24 views
1

マーカーをクリックするたびにインフォウィドウを特定のマーカーで開くようにします。しかし、それが前回と同じ位置にとどまるたびに。ここに私のコードはGoogle Maps API v3:InfoWindowが正しい位置にありません

var infowindow = new google.maps.InfoWindow(
    { 
     size: new google.maps.Size(150,20) 
    }); 
    var markersArray = []; 
    var countMarker = 0; 


    function initialize() {  
     geocoder = new google.maps.Geocoder(); 
     var myLocation = new google.maps.LatLng(52.13206069538749, -106.63635849952698); 
     var mapOptions = { 
      zoom: 12, 
      center: myLocation, 
      mapTypeControl: true, 
      navigationControl: true, 
      mapTypeId: google.maps.MapTypeId.ROADMAP 
     }; 
     map = new google.maps.Map(document.getElementById("mapCanvas"), mapOptions); 
     google.maps.event.addListener(map, 'click', function(event) { 

      addMarker(event.latLng); 
      infowindow.setPosition(marker.getPosition()); 
      infowindow.setContent(event.latLng.toString()); 

      infowindow.open(map,marker); 

      // showing latitude and longitude in infowindow 


      if (flag == 1){ 
       document.getElementById("latbox").value=event.latLng.lat(); 
       document.getElementById("lngbox").value=event.latLng.lng(); 
       flag++; 
      } 
      else{ 
       var current_lat = event.latLng.lat().toString(); 
       var current_lng = event.latLng.lng().toString(); 
       insRow(current_lat, current_lng, marker.id); 
      } 
      google.maps.event.addListener(marker, 'click', function() { 
       // addMarker(event.latLng); 
       // infowindow.setPosition(event.latLng); 
       infowindow.setPosition(marker.getPosition()); 
       infowindow.setContent(event.latLng.toString()); 
       //infowindow.open(map,event.latLng); 
      }); 
     }); 
     //document.write("3"); 
     google.maps.event.trigger(marker, 'click');  
    }  
function addMarker(location) { 
     countMarker++; 
     marker = new google.maps.Marker({ 
      position: location, 
      map: map, 
      id: countMarker 
     }); 
     markersArray.push(marker);    
     //alert(marker.id); 
    } 

私はこの点について助けてください?私はあなたが変数マーカーを定義しているコードで表示されていない、また

  google.maps.event.addListener(marker, "click", function (event) { 
       infoWindow.setContent(this.position); 
       infoWindow.open(map, this); 
       }); 

答えて

4

は、このしてみてください。

あなたは

var marker = addMarker(event.latLng); 

に変更addMarker(event.latLng);を追加し、マーカーオブジェクトを返すために機能を変更する場合があります

function addMarker(location) { 
    countMarker++; 
    var marker = new google.maps.Marker({ 
       position: location,      
       map: map,      
       id: countMarker     
     }); 

    markersArray.push(marker);       
    return marker; 
} 
+0

はありがとうございました。それはうまくいった!私は次の行を保ちました。 'infowindow.setContent(event.latLng.toString()); infowindow.open(map、marker); ' – Pow

関連する問題