如何使用Angular的$ compile函数生成KML文件?

时间:2014-06-20 04:59:04

标签: javascript xml angularjs kml

在我的Angular 1.2.18应用程序中,我有一个由位置名称和纬度/经度坐标对组成的对象数组。我想生成一个KML文件,其中包含与此数组对应的Placemarks列表。

使用Angular的$ compile服务来生成KML似乎是个好机会,但由于某种原因,用于生成Placemarks的ng-repeat指令被解释为Angular linkFn中的#comment节点。

我的KML导出功能如下:

$scope.export = function() {

  $http({method: 'GET', url: 'templates/kml_export.xml'}).
    success(function(data/*, status, headers, config*/) {
      var element = angular.element(data);
      var linkFn = $compile(element);
      var result = linkFn($scope);
      $log.debug(result);
    }).
    error(function(data, status/*, headers, config*/) {
      $log.error('error while retrieving KML export template: ' + status);
      $log.error(data);
    }
  );
};

我的kml_export.xml模板如下:

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
  <Document>
    <name>My KML Document</name>
    <open>1</open>
    <Folder>
      <name>Exported Locations</name>
      <description>Placemarks generated from saved locations</description>
      <Placemark ng-repeat="location in $storage.savedLocations">
        <name>{{location.title}}</name>
        <description>{{location.notes}}</description>
        <Point>
          <coordinates>{{location.coordinate.longitude}},{{location.coordinate.latitude}},0</coordinates>
        </Point>
        <LookAt>
           <range>{{rangeOf(location.zoomLevel)}}</range>
           <longitude>{{location.coordinate.longitude}}</longitude>
           <latitude>{{location.coordinate.latitude}}</latitude>
           <altitude>0</altitude>
           <heading>0</heading>
           <tilt>0</tilt>
           <altitudeMode>clampToGround</altitudeMode>
        </LookAt>
      </Placemark>
    </Folder>
  </Document>
</kml>

$ scope。$ storage.savedLocations是位置对象的数组,每个位置对象都具有KML模板中引用的属性(例如.title,.notes,.coordinate等)。 $ scope.export()函数在我的控制器中调用。 (是的,我在控制器中进行DOM操作,但是我从不想在浏览器中呈现结果,所以指令看起来不合适。)

在Chrome中,将结果输出到控制台始终会显示以下内容:

Console output from Chrome

我希望扩展ng-repeat指令以使用$ storage.savedLocations中的数据完成模板。

任何指针都非常感激。

0 个答案:

没有答案