在所选项目上使用Google Maps Javascript API信息窗口的正确方法
在我的项目中,我使用GoogleMapsJavaScriptAPI更新一个包含所有标记的下拉框。目标是当用户选择其中一个时,在地图上用一个信息窗口显示最后一个。像这样 我的问题是,当我从列表中选择一个项目时,它不会在地图上显示好的项目,并且infowindow.setContent seam do也不起作用 我做错了什么 代码片段:在所选项目上使用Google Maps Javascript API信息窗口的正确方法,javascript,jquery,google-maps,google-maps-api-3,Javascript,Jquery,Google Maps,Google Maps Api 3,在我的项目中,我使用GoogleMapsJavaScriptAPI更新一个包含所有标记的下拉框。目标是当用户选择其中一个时,在地图上用一个信息窗口显示最后一个。像这样 我的问题是,当我从列表中选择一个项目时,它不会在地图上显示好的项目,并且infowindow.setContent seam do也不起作用 我做错了什么 代码片段: 最后我找到了一个正确管理它的解决方案。我希望这能帮助其他和我有同样问题的人 请提供一份说明问题的报告。地图样式中有很多无关的代码,为什么要在下拉列表的处理程序中对地
最后我找到了一个正确管理它的解决方案。我希望这能帮助其他和我有同样问题的人
请提供一份说明问题的报告。地图样式中有很多无关的代码,为什么要在下拉列表的处理程序中对地址进行地理编码?@geocodezip请停止使用downvote,这不是真正的感谢。我已通过删除样式清理了代码。我在下拉列表的处理程序中使用地理编码,因为我传递了map.makers for infowindow,然后在控制台中出现以下错误消息:InvalidValueError:setPosition:not a LatLng或LatlInTerral:in property lat:not a number
$('#markerlist').on('change', function() {
var $data = $("#markerlist option:selected").text();
$.each(map.markers, function() {
for (var i = 0; i < $data.length; i++) {
if (this.filter.menu.indexOf($data[i]) < 0) {
doGeocoding(this.position, this.filter.urlSmoke);
return;
}
}
});
});
function doGeocoding(latLng, label) {
geocoder.geocode({'location': latLng}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
if (results[1]) { // use 2nd array item, a less-specific address
infowindow.setContent(label);
} else {
infowindow.setContent('');
}
} else {
infowindow.setContent('no data found');
}
});
infowindow.setPosition(latLng);
infowindow.open(map);
}
// Handle change status from Option HTML
$('#markerlist').on('change', function() {
// get attribute data from option selected html
var lat = $(this).find(':selected').data('lat');
var lng = $(this).find(':selected').data('lng')
var markerIdx = $(this).find(':selected').data('marker');
var label = map.markers[markerIdx].filter.menu;
// get marker from map array
var setMarker = map.markers[markerIdx];
// set nex latlng from option selected
var latlng = new google.maps.LatLng(lat, lng);
// set new infowindows from previous datas
infowindow.setContent(label);
infowindow.setPosition(latlng);
infowindow.open(map, setMarker);
})