从数据库中读取KML

时间:2017-09-11 11:33:34

标签: angularjs google-maps kml

我实际上在我的Javascript应用程序中使用谷歌地图处理一些kml文件时遇到了问题。

我写了一个方法,我从URL或本地文件系统读取KML文件,并将内容作为字符串存储在数据库中。现在我想通过单击按钮激活存储在我的数据库中的图层。这里的一切都很好。

在每个例子中,我都可以通过将url传递给KML文件来找到它们只使用KmlLayer的url-attribute。

喜欢这里:

    var ctaLayer = new google.maps.KmlLayer({
    url: 'http://googlemaps.github.io/js-v2-samples/ggeoxml/cta.kml',
    map: map
    });

但是由于我的文件在我的数据库中存储为字符串,所以我没有文件的网址,只有内容。我找不到只将XML-String作为内容传递的方法。 有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

也许有一天有人会遇到类似的问题。解决方案有点棘手。我需要创建一个包含我的String内容的Blob。使用blob,我创建了一个文件并将其打包到URL中。您可以将此URL传递给kml解析器。我使用了https://github.com/geocodezip/geoxml3

vm.activeLayers.forEach(function(value, key) {
   var file = new Blob([value], {type: 'kml'})
   var url = URL.createObjectURL(file);
   var myParser = new geoXML3.parser({
      map : map
   });
   myParser.parse(url);
})