2016-09-16 4 views
-2

GoogleマップApiを使用してウェブアプリケーションを構築し、ポリラインクリックイベントに問題が発生しました。 マップにマーカーを追加しようとしましたが、それらを一緒に結合しました。私は、ポリラインをクリックすると、そのポリラインの始点と終点であるマーカーを得ることができると思います。しかし、1つの結果だけは、私は別のpolylines.Here私のソースコードをクリックし、すべての回で同じ同じ返される:あなたのpolyLineClicked機能で複数のGoogleマップポリラインクリックイベント

var locations = [ 
    { title: "Site 1", lat: 16.044137, lng: 108.206511 }, 
    { title: "Site 2", lat: 16.067161, lng: 108.186259 }, 
    { title: "Site 3", lat: 16.063472, lng: 108.215248 }, 
    { title: "Site 4", lat: 16.041847, lng: 108.193539 }, 
    { title: "Site 5", lat: 16.054186, lng: 108.172890 }, 
]; 

var map = new google.maps.Map(document.getElementById('map'), { 
    zoom: 14, 
    center: new google.maps.LatLng(16.067161, 108.186259), 
    mapTypeId: google.maps.MapTypeId.SATELLITE 
}); 

var infowindow = new google.maps.InfoWindow(); 

var polyLineClicked = function (polyline, fromIndex, toIndex) { 
    google.maps.event.addListener(polyline, 'click', function (e) { 
     infowindow.setContent = fromIndex + " to " + toIndex; 
     infowindow.setPosition = event.latLng; 
     infowindow.open(map); 
    }); 
} 
for (var i = 0; i < locations.length; i++) { 
    var position = new google.maps.LatLng(locations[i].lat, locations[i].lng); 
    var marker = new google.maps.Marker({ 
     position: position, 
     map: map 
    }); 

    google.maps.event.addListener(marker, 'click', (function (marker, i) { 
     return function() { 
      infowindow.setContent(locations[i].title); 
      infowindow.open(map, marker); 
     } 
    })(marker, i)); 

    if (i <= locations.length - 2) { 

     var nextPosition = new google.maps.LatLng(locations[i + 1].lat, locations[i + 1].lng); 
     var polyline = new google.maps.Polyline({ 
      path: [position, nextPosition], 
      strokeColor: 'black', 
      strokeOpacity: 1, 
      strokeWeight: 7, 
      map: map, 
      fromPositionIndex: i, 
      toPositionIndex: i+1 
     }); 
     var fromIndex = locations[i].title; 
     var toIndex = locations[i + 1].title; 

     polyLineClicked(polyline, fromIndex, toIndex); 
    } 
} 
+0

(任意の情報ウィンドウが表示されません) – geocodezip

答えて

1

を、あなたはinfoWindow class methodsを呼び出すのではなく、のsetContentとsetPositionを再割り当てされています。

掲載のコードは動作しません
var polyLineClicked = function(polyline, fromIndex, toIndex) { 
    google.maps.event.addListener(polyline, 'click', function(e) { 
    // call the methods instead of reassigning 
    infowindow.setContent(fromIndex + " to " + toIndex); 
    infowindow.setPosition(e.latLng); 
    infowindow.open(map); 
    }); 
}; 

jsfiddle

+0

素晴らしいです!ありがとうございます。 –

+0

あなたの回答があなたに役立った場合は、アップしてください! – kaskader

関連する問題