9

đã tạo bản đồ mà tôi đang cố gắng có chức năng tương tự như 'Bản đồ của tôi'. Tôi có hai danh sách thả xuống ở bên phải, dựa trên lựa chọn trong các ddl đó, bạn có thể thêm biểu tượng/điểm đánh dấu tùy chỉnh. Bạn chọn loại điểm đánh dấu, sau đó nhấp vào nút '+' ở góc trên cùng bên phải của bản đồ và sau đó nhấp vào nơi bạn muốn thêm điểm đánh dấu. Vấn đề của tôi là, điều này hoạt động tốt trong IE, Safari và Chrome, nhưng không hoạt động trong firefox. Sự kiện nhấp chuột dường như không kích hoạt.API Google Maps v3: Các sự kiện nhấp không được kích hoạt trong firefox cho điểm đánh dấu tùy chỉnh

Đây là vị trí của bản đồ: https://ait.saultcollege.ca/Michael.Armstrong/Index.html

Nút để thêm điểm đánh dấu ở phía trên bên phải có một sự kiện onclick trỏ đến chức năng 'đánh dấu địa()' của tôi. Đây là mã cho placeMarker(), createMarker() ...

 
function placeMarker() { 

    select("placeMarker"); 

    var infowindow = new google.maps.InfoWindow({}); 
    var catID = document.getElementById('category'); 
    var typeID = document.getElementById('ddlType'); 
    var category = catID.options[catID.selectedIndex].value; 
    var markerType = typeID.options[typeID.selectedIndex].value; 

    if (!markerType) { 
     alert("You must select an icon type."); 
    } 
    else { 
     var moveListener = google.maps.event.addListener(customMap, 'mousemove', function(event) { 
      if (mapMarker) { 
       mapMarker.setPosition(event.latLng); 
      } else { 
       mapMarker = createMarker(event.latLng, "test", markerType, "test"); 
      } 
     }); 

     var clickListener = google.maps.event.addListener(customMap, 'click', function(event) { 
      if (mapMarker) { 
       select("hand_b"); 
       google.maps.event.clearListeners(customMap, 'mousemove'); 
       google.maps.event.removeListener(listener); 
       mapMarker = createMarker(event.latLng, "test2", markerType, "test"); 

       var htmlInfo = "" + 
        "Category:" + category + "" + 
        "Item:" + markerType + "" + 
        "Notes:" + 
        "Location:" + mapMarker.getPosition().toString() + "" + 
        "" + 
        ""; 

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

function createMarker(latlng, title, icon, html) { 
    var mapMarker = new google.maps.Marker({ 
     position: latlng, 
     map: customMap, 
     title: title, 
     icon: 'Images/' + icon + '.png' 
    }); 
    return mapMarker; 
} 

function select(buttonId) { 
    document.getElementById("hand_b").className = "unselected"; 
    document.getElementById("placeMarker").className = "unselected"; 
    document.getElementById(buttonId).className = "selected"; 
} 

Mọi trợ giúp hoặc đề xuất sẽ thật tuyệt vời. Có lẽ điều này có lẽ là một lỗi trong ff?

+0

Các mã trên trang web này là một chút được cập nhật, không có sự thay đổi, mặc dù cùng một vấn đề. Bất kỳ ý tưởng? Ai đó có thể mở trang web được đăng ở trên trong IE8, Chrome và FireFox và cho tôi biết liệu họ có gặp sự cố với FireFox không? –

Trả lời

1

Tôi đã làm điều gì đó rất giống với gói phần mềm thiên tai nguồn mở. Trong trường hợp này, giả sử tôi đã chọn "Fire" trong trình đơn thả xuống của tôi và điều này gây nên addFire(). Trình nghe trên các điểm đánh dấu sẽ xóa điểm trên một lần nhấp hoặc cho phép bạn kéo điểm đó. Bản đồ chỉ có thể có một người nghe tại một thời điểm, nhưng mỗi điểm đánh dấu vẫn có thể có người nghe riêng của mình cùng một lúc.

Đây là mã mà làm việc trên Chrome, Firefox và IE8:

 
//This function sets up the map for adding a fire icon 
function addFire() { 
//Kill old listener 
if(listening) 
    google.maps.event.removeListener(listenerhandle); 

//Start new listener 
listenerhandle = google.maps.event.addListener(disasterMap, 'click', addFirePoint); 
listening = true; 
}//end addFire 

//This function adds new fire points to the map and controls dragging and clicking 
function addFirePoint(event) { 
//Create the marker 
var fireMarker = new google.maps.Marker({ 
    icon: "./mapimgs/fire.png", position: event.latLng, map: disasterMap, draggable: true }); 

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

//Listen for clicks on the new marker 
google.maps.event.addListener(fireMarker, 'click', function() { 
     fireMarker.setMap(null); 
    //remove the marker from the array 
    for(i=0;i
Các vấn đề liên quan