在我的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中,将结果输出到控制台始终会显示以下内容:
我希望扩展ng-repeat指令以使用$ storage.savedLocations中的数据完成模板。
任何指针都非常感激。