2013-03-20 5 views
0

Я пытаюсь заполнить текстовое поле событием dblclick, используя информацию из базы данных. Когда я дважды нажимаю на маркер, неверная информация используется для заполнения полей. Я получаю те же значения для любого маркера, который я дважды нажимаю. Я пробовал различные способы ссылки на значения колидов, драйверов и транспортных средств, но если я что-то изменил, все, что я получаю, - это неизвестные значения в поле.Google Maps заполняет текстовое поле дополнительной информацией

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

ответ

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

+0

добавьте это на свой вопрос (код для bindInfoWindow ...). – geocodezip

+0

Не для моего ответа ... – geocodezip