2013-03-20 60 views
0

我想用dblclick事件使用來自數據庫的信息填充文本字段。當我雙擊標記時,將使用不正確的信息填充字段。我對雙擊任何標記都會得到相同的值。我已經嘗試過各種方式來參考colid,駕駛員和車輛的價值觀,但是如果我改變了任何事情,我所得到的只是該領域中未知的值。谷歌地圖填充文本字段與其他詳細信息

map = new google.maps.Map(document.getElementById("map"), map_options); 
var infoWindow = new google.maps.InfoWindow; 

downloadUrl(url, function(data) { 
var xml = data.responseXML; 
var markers = xml.documentElement.getElementsByTagName("marker"); 
for (var i = 0; i < markers.length; i++) { 
var ThisMarker = markers[i]; 
var InfoText = ThisMarker.getAttribute("InfoText"); 
var colid = ThisMarker.getAttribute("colid"); 
var driver = ThisMarker.getAttribute("driver"); 
var vehicle_reg = ThisMarker.getAttribute("vehicle"); 
var mtype = ThisMarker.getAttribute("type"); 
var point = new google.maps.LatLng(
    parseFloat(ThisMarker.getAttribute("lat")), 
    parseFloat(ThisMarker.getAttribute("lng")) 
); 
var icon = customIcons[mtype] || {}; 
var marker = new google.maps.Marker({ 
    map: map, 
    position: point, 
    icon: icon.icon, 
    clickable: true 
}); 

bindInfoWindow(marker, map, infoWindow, InfoText); 

if(mtype == 'col' || mtype == 'del') { 
google.maps.event.addListener(marker, 'dblclick', function() { 
document.getElementById("collivery_id").value = colid; 
document.getElementById("command").value = 'action'; 
}); 
} 

if(mtype == 'bike' || mtype == 'car' || mtype == 'bakkie' || mtype == 'truck') { 
    google.maps.event.addListener(marker, 'dblclick', function() { 
    document.getElementById("driver").value = driver; 
    document.getElementById("vehicle").value = vehicle_reg; 
}); 
} 
} 
}); 

function bindInfoWindow(marker, map, infoWindow, InfoText) { 
    google.maps.event.addListener(marker, 'mouseover', function() { 
    infoWindow.setContent(InfoText); 
    infoWindow.open(map, marker); 
}); 
google.maps.event.addListener(marker, 'mouseout', function() { 
    infoWindow.close(map, marker); 
}); 
} 
+0

是指從最後一個標記值是多少?這看起來像一個問題,可以通過JavaScript函數關閉來解決(很多關於InfoWindows的類似帖子)。 – geocodezip 2013-03-20 12:48:32

回答

0

可能的解決方法使用功能關閉:

map = new google.maps.Map(document.getElementById("map"), map_options); 
var infoWindow = new google.maps.InfoWindow; 

downloadUrl(url, function(data) { 
    var xml = data.responseXML; 
    var markers = xml.documentElement.getElementsByTagName("marker"); 
    for (var i = 0; i < markers.length; i++) { 
    var ThisMarker = markers[i]; 
    var InfoText = ThisMarker.getAttribute("InfoText"); 
    var colid = ThisMarker.getAttribute("colid"); 
    var driver = ThisMarker.getAttribute("driver"); 
    var vehicle_reg = ThisMarker.getAttribute("vehicle"); 
    var mtype = ThisMarker.getAttribute("type"); 
    var point = new google.maps.LatLng(
     parseFloat(ThisMarker.getAttribute("lat")), 
     parseFloat(ThisMarker.getAttribute("lng")) 
    ); 
    var icon = customIcons[mtype] || {}; 
    var marker = new google.maps.Marker({ 
     map: map, 
     position: point, 
     icon: icon.icon, 
     clickable: true 
    }); 

    bindInfoWindow(marker, map, infoWindow, ThisMarker); 
}); 

function bindInfoWindow(marker, map, infoWindow, marker) 
{ 
    var InfoText = marker.getAttribute("InfoText"); 
    var colid = marker.getAttribute("colid"); 
    var driver = marker.getAttribute("driver"); 
    var vehicle_reg = marker.getAttribute("vehicle"); 
    var mtype = marker.getAttribute("type"); 
    if(mtype == 'col' || mtype == 'del') { 
    google.maps.event.addListener(marker, 'dblclick', function() { 
     document.getElementById("collivery_id").value = colid; 
     document.getElementById("command").value = 'action'; 
    }); 
    } 
    if(mtype == 'bike' || mtype == 'car' || mtype == 'bakkie' || mtype == 'truck') { 
    google.maps.event.addListener(marker, 'dblclick', function() { 
     document.getElementById("driver").value = driver; 
     document.getElementById("vehicle").value = vehicle_reg; 
    }); 
    } 
    // whatever code is currently in your bindInfoWindow function 
    // possibly this: 
    google.maps.event.addListener(marker, 'mouseover', function() { 
    infoWindow.setContent(InfoText); 
    infoWindow.open(map, marker); 
    }); 
    google.maps.event.addListener(marker, 'mouseout', function() { 
    infoWindow.close(map, marker); 
    }); 
} 
+0

謝謝,會嘗試。 – DRAllan 2013-03-20 13:13:43

+0

請將其添加到您的問題(bindInfoWindow的代碼...)。 – geocodezip 2013-03-20 13:15:35

+0

不是我的回答... – geocodezip 2013-03-20 13:17:59