如何动态添加标记到谷歌地图?

时间:2013-09-13 12:40:41

标签: google-maps

使用第一个脚本我创建地图并使用第二个脚本添加标记(这不起作用)。我需要使用单独的脚本添加标记,因为标记数据是从我的数据库中检索的。查询循环记录并为脚本提供标记的名称和坐标。我知道问题是关于变量“map”。如果我将标记脚本移动到第一个脚本中,它就可以工作。有人可以帮帮我吗?

 <script type="text/javascript">
var map;
function GoogleLoadMap() {
 var latLng = new google.maps.LatLng(35.337186, 33.337439);
 var homeLatLng = new google.maps.LatLng(35.314246, 33.389347);

 map = new google.maps.Map(document.getElementById('map_canvas'), {
   zoom: 12,
   center: latLng,
   mapTypeId: google.maps.MapTypeId.ROADMAP
 });
};

</script>


<script type="text/javascript">


 var marker<%=iii%> = new MarkerWithLabel({
   position: new google.maps.LatLng(<%=lat%>, <%=lon%>),
   draggable: true,
   map: map,
   labelContent: "<%=HNAME%>",
   labelAnchor: new google.maps.Point(22, 0),
   labelClass: "labels", // the CSS class for the label
   labelStyle: {opacity: 0.75}
 });

 var iw<%=iii%> = new google.maps.InfoWindow({
   content: "<%=HNAME%>"
 });

 google.maps.event.addListener(marker<%=iii%>, "click", function (e) {           
 iw<%=iii%>.open(map, marker<%=iii%>); });


</script>

1 个答案:

答案 0 :(得分:1)

这是一个时间问题。在创建所有标记后,将初始化在GoogleLoadMap()函数中初始化的地图(我假设它在窗口加载事件上运行,但您不提供该代码)。初始化地图后(在GoogleLoadMap函数内),您需要初始化标记,或者在初始化地图后调用所有标记上的.setMap方法。