我看到了一个关于如何在此页面上动态加载标记的示例
https://developers.google.com/maps/articles/phpsqlsearch_v3
我看到另一个代码点火器Google-maps来自BIOSTALL的api。
但是这个(http://biostall.com/codeigniter-google-maps-v3-api-library)库没有动态加载标记我怎么能用它自己的库来实现呢。
我应该尝试在map init上获取标记,还是库提供了使用ajax加载这些标记的方法
答案 0 :(得分:1)
首先,感谢您使用我的图书馆。值得注意的是,该库只是简化Google Maps代码生成的一种方式。它代表您构建JavaScript和HTML,使您可以快速轻松地将地图添加到页面中。
开发人员可能希望与Google Maps API进行交互,有一百万种方式,图书馆无法满足每个实例的需求。因此,有时候,在这样的定制情况下,您可能需要添加自己的代码,以便它能够按照您的要求执行。
因此,我建议您在回显$ map ['js']后添加自己需要的自定义JS。库中有一个名为createMarker()的函数,如果你查看源代码,你会看到它。
在伪代码中,这将是这样的:
<?php echo $map['js']; ?>
<script type="text/javascript">
// Get marker(s) with ajax
// Call createMarker() function to add marker(s) to map
</script>
我希望这有所帮助。
答案 1 :(得分:1)
尝试Biostall建议的伪代码,这就是我实现的:
$.ajax({
url: '*URL*',
type: "POST",
data: ({value : *value*}),
dataType: "json", //retrieved Markers Lat/lng in Json, thus using this dataType
success: function(data){
//Removing already Added Markers//////////
for(var i=0; i < markers.length; i++){
markers[i].setMap(null);
}
markers = new Array();
//////////////////////////////////////////
// Adding New Markers////////////////////
for (var i = 0, len = data.length; i < len; ++i) { // Iterating the Json Array
var d = data[i];
var lat = parseFloat(d.lattitude);
var lng = parseFloat(d.longitude);
var myLatlng = new google.maps.LatLng(lat,lng);
var marker = {
map:map,
position:myLatlng // These are the minimal Options, you can add others too
};
createMarker(marker);
}
}
}
);
注意:如果正在向此ajax调用发送一个Markers数组,则必须使用php函数json_encode()进行json编码。因此,您可以使用ajax调用参数中提到的dataType: "json"
。
这对我有用,希望这可能会有所帮助。