13

「マイマップ」に似た機能を持たせようとしている地図を作成しました。これらの ddl の選択に基づいて、右側に 2 つのドロップダウンリストがあり、カスタム マーカー/アイコンを追加できます。マーカーの種類を選択し、マップの右上隅にある [+] ボタンをクリックして、マーカーを追加する場所をクリックします。私の問題は、これは IE、Safari、および Chrome では正常に機能しますが、Firefox では機能しないことです。クリックイベントが発生していないようです。

マップの場所は次のとおりです: https://ait.saultcollege.ca/Michael.Armstrong/Index.html

右上にマーカーを追加するボタンには、「placeMarker()」関数を指す onclick イベントがあります。placeMarker()、createMarker() のコードは次のとおりです。

関数 placeMarker() {

    select("placeMarker");

    var infowindow = 新しい google.maps.InfoWindow({});
    var catID = document.getElementById('category');
    var typeID = document.getElementById('ddlType');
    var カテゴリ = catID.options[catID.selectedIndex].value;
    var markerType = typeID.options[typeID.selectedIndex].value;

    if (!markerType) {
        alert("アイコンの種類を選択する必要があります。");
    }
    そうしないと {
        var moveListener = google.maps.event.addListener(customMap, 'mousemove', function(event) {
            if (mapMarker) {
                mapMarker.setPosition(event.latLng);
            } そうしないと {
                mapMarker = createMarker(event.latLng, "test", markerType, "test");
            }
        });

        var clickListener = google.maps.event.addListener(customMap, 'クリック', function(event) {
            if (mapMarker) {
                select("hand_b");
                google.maps.event.clearListeners(customMap, 'mousemove');
                google.maps.event.removeListener(リスナー);
                mapMarker = createMarker(event.latLng, "test2", markerType, "test");

                var htmlInfo = "" +
                    "カテゴリ:" + カテゴリ + "" +
                    "アイテム:" + マーカータイプ + "" +
                    「メモ:」 +
                    "場所:" + mapMarker.getPosition().toString() + "" +
                    "" +
                    "";

                //infowindow.setContent(htmlInfo);
                //infowindow.open(customMap, mapMarker);
            }
        });
    }
}

関数 createMarker(latlng、タイトル、アイコン、html) {
    var mapMarker = 新しい google.maps.Marker({
        位置: 緯度,
        マップ: customMap、
        タイトル: タイトル、
        アイコン: '画像/' + アイコン + '.png'
    });
    mapMarker を返します。
}

関数選択(ボタンID){
    document.getElementById("hand_b").className = "未選択";
    document.getElementById("placeMarker").className = "未選択";
    document.getElementById(buttonId).className = "選択済み";
}

どんな助けや提案も素晴らしいでしょう。これはおそらくffのバグでしょうか?

4

1 に答える 1

1

私はオープンソースの災害ソフトウェアパッケージに対して非常に似たようなことをしました。この場合、ドロップダウンメニューで[Fire]を選択し、これによりaddFire()がトリガーされると仮定します。マーカーのリスナーは、クリックするとポイントを削除するか、ドラッグできるようになります。マップには一度に1つのリスナーしか含めることができませんが、各マーカーには同時に独自のリスナーを含めることができます。

Chrome、Firefox、IE8で動作したコードは次のとおりです。

//この関数は、火のアイコンを追加するためのマップを設定します
関数addFire(){
 //古いリスナーを殺す
 if(リスニング)
  google.maps.event.removeListener(listenerhandle);

 //新しいリスナーを開始します
 listenerhandle = google.maps.event.addListener(disasterMap、'クリック'、addFirePoint);
 リスニング=true;
} // end addFire

//この関数は、マップに新しい火のポイントを追加し、ドラッグとクリックを制御します
関数addFirePoint(event){
 //マーカーを作成します
 var fireMarker = new google.maps.Marker({
  アイコン: "./ mapimgs / fire.png"、位置:event.latLng、マップ:disasterMap、ドラッグ可能:true});

 newFireMarkers.push(fireMarker);
 fireMarker.setTitle( "Fire");

 //新しいマーカーのクリックをリッスンします
 google.maps.event.addListener(fireMarker、'クリック'、function(){
      fireMarker.setMap(null);
   //配列からマーカーを削除します
   for(i = 0; i
于 2010-11-02T02:48:46.603 に答える