【发布时间】:2015-06-06 17:02:25
【问题描述】:
我有一个使用谷歌地图 v3 设置的地图,其中标记保存到数据库中。一个新的标记信息窗口包含一个将数据保存到 PHP 数据库的表单。加载地图时,会显示标记并单击它们时可以看到相应的信息。这里的问题是所有标记都显示了插入最后一行时保存的信息。
这会从数据库中加载数据:
// Get markers from XML - (event_data.php)
$.get("event_data.php", function (data) {
$(data).find("markers").each(function () {
var name = $(this).attr('name');
var description = '<p>'+ $(this).attr('description') +'</p>';
var category = $(this).attr('category');
var edate = $(this).attr('edate');
var point = new google.maps.LatLng(parseFloat($(this).attr('lat')),parseFloat($(this).attr('lon')));
create_marker(point, name, description, category, edate, false, false, false, "static/assets/new_event_marker.png");
});
});
这是显示已保存标记的内容:
function create_marker(MapPos, eName, eDesc, eCateg, eDate, InfoOpenDefault, DragAble, Removable, iconPath)
{
var marker = new google.maps.Marker({
position: MapPos,
map: map,
draggable:DragAble,
title: eName,
icon: iconPath
});
// Content to be displayed in event InfoWindows
var eventContent = $('<div class="event-details">' + '<h4 class="event-name">' + eName + '</h4><hr>' +
'<span><h5>Date: </h5>' +
'<p class="event-date">' + eDate + '</p></span>' +
'<p class="event-description">'+ eDesc +'</p>' +
'<button type="button" name="remove-event" class="remove-event btn btn-warning btn-sm"><span class="glyphicon glyphicon-remove"></span> Remove Event</button>'+
'</div>');
//set the content of infoWindow
infowindow.setContent(eventContent[0]);
当我在浏览器中运行 event_data.php 时,它会返回所有已保存的事件标记。
我也运行了 console.log(eName);就在“var marker”之前,它返回数据库中的所有项目,但有1个额外的“undefined”:
undefined
event1
event2
event3
【问题讨论】:
-
如何打开信息窗口?
-
google.maps.event.addListener(marker, 'click', function() { infowindow.open(map,marker);
-
如果我的回答不适合你,请提供一个Minimal, Complete, Tested and Readable example 来证明问题。
标签: javascript php google-maps-api-3