1

私はグーグルマップAPIを使用しています。一度に2つのマウスイベントをトリガーできるようにしたい。以下はコードスニピットです。

function initialize() {
var myLatlng = new google.maps.LatLng(37.4419, -122.1419);
var myOptions = {
  zoom: 13,
  center: myLatlng,
  mapTypeId: google.maps.MapTypeId.ROADMAP
}
map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);

    var polyOptions = {
        strokeColor: '#000000',
        strokeOpacity: 1.0,
        strokeWeight: 3  }
    poly = new google.maps.Polyline(polyOptions);
    poly.setMap(map);
    // Add a listener for the click event
    google.maps.event.addListener(map, 'click', addLatLng);
}

function addLatLng(event) {
var path = poly.getPath();

if(!draw)
{
    path.push(event.latLng);
    path.push(event.latLng);
    draw = true;
// Add a new marker at the new plotted point on the polyline.

    var marker = new google.maps.Marker({
            position: event.latLng,
            title: '#' + path.getLength(),
            map: map  });
    google.maps.event.addListener(map, 'mousemove', moveTrackLine);
}
else
{
        path.push(event.latLng);
        var marker = new google.maps.Marker({
                                                    position: event.latLng,
                                                    title: '#' + path.getLength(),
                                                    map: map  });
        draw = false;
}
}

function moveTrackLine(event) {

var path = poly.getPath();
// replace the old point with a new one to update the track
path.pop();
path.push(event.latLng);
}

初めて地図をクリックすると、地図上にマーカーが配置されています。次に、マウスを動かすと、ポリラインが更新され、カーソルを正しく追跡します。次に、マップをクリックしても、マップ上にマーカーが配置されていません。また、addLatLng関数にアクセスすることもありません。よろしくお願いします。-ティム

4

1 に答える 1

0

clickableポリラインの -option を false に設定します。

問題: mousemove イベントがマップに適用されるとすぐに、マウス カーソルの下が常にポリラインになるため、マップをクリックできなくなります。

ポリラインのクリック可能オプションを false に設定すると、ポリラインはマウス イベントに応答せず、クリック イベントがマップに渡されます。

于 2013-01-16T23:32:29.260 に答える