将KML图层添加到Google地图API 3

时间:2011-04-11 19:51:15

标签: javascript google-maps-api-3

我正在尝试这样做,以便当用户从表单中选择一些内容并点击提交时,它会将所有内容添加到谷歌地图中。添加标记可以很好地工作,并添加一个监听事件来添加折线也可以正常工作。由于某种原因,KML文件将无法正确覆盖。我不确定我是否正确地做到了。表单中的值确实正确回显,因此我知道数据至少达到了map函数。以下是无效的代码:

window.onload = function() {
        // Creating an object literal containing the properties
        // we want to pass to the map
        var options = {
            zoom: 5,
            center: new google.maps.LatLng(39.09, -95.71),
            mapTypeId: google.maps.MapTypeId.ROADMAP
        };
        // Creating the map
        var map = new google.maps.Map(document.getElementById('map'), options);
        // Creating a LatLngBounds object
        var bounds = new google.maps.LatLngBounds();

        // Creating an empty MVCArray
        var route = new google.maps.MVCArray();

        var polyline = new google.maps.Polyline({
            path: route,
            strokeColor: "#ff0000",
            strokeOpacity: 0.6,
            strokeWeight: 5
        });      
        polyline.setMap(map);
        google.maps.event.addListener(map, 'click', function(e) {
            var path = polyline.getPath();
            path.push(e.latLng);
        });
        kmlFiles.setMap(map);

这是设置kmlFiles变量的代码:

kmlFiles = new google.maps.KmlLayer(<?php echo $_POST['kmlFile']; ?>);

1 个答案:

答案 0 :(得分:0)

我怀疑你错过了传递给KMLLayer的网址的引号,例如。

var layer = new google.maps.KmlLayer(http://www.site.com/foo.kml);

无效

var layer = new google.maps.KmlLayer(“http://www.site.com/foo.kml”);

有效。