如何使用ajax调用加载标记

时间:2013-03-04 08:46:07

标签: codeigniter google-maps-api-3

我看到了一个关于如何在此页面上动态加载标记的示例

https://developers.google.com/maps/articles/phpsqlsearch_v3

我看到另一个代码点火器Google-maps来自BIOSTALL的api。

但是这个(http://biostall.com/codeigniter-google-maps-v3-api-library)库没有动态加载标记我怎么能用它自己的库来实现呢。

我应该尝试在map init上获取标记,还是库提供了使用ajax加载这些标记的方法

2 个答案:

答案 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"

这对我有用,希望这可能会有所帮助。