Tuesday, 15 May 2012

javascript - How can I use Angular's $compile function to generate a KML file? -



javascript - How can I use Angular's $compile function to generate a KML file? -

in angular 1.2.18 app, have array of objects consisting of location name , latitude/longitude coordinate pair. generate kml file consisting of list of placemarks corresponding array.

it seems chance utilize angular's $compile service generate kml, reason, ng-repeat directive intended generate placemarks interpreted #comment node in angular linkfn.

my kml export function follows:

$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); } ); };

my kml_export.xml template follows:

<?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 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 array of location objects, each properties referenced in kml template (e.g. .title, .notes, .coordinate etc.). $scope.export() function called in controller. (yes, i'm doing dom manipulation in controller, sort of, never want render result in browser, directive doesn't seem suitable approach.)

in chrome, outputting result console gives following:

i'd expected ng-repeat directive have been expanded finish template info $storage.savedlocations.

any pointers much appreciated.

javascript xml angularjs kml

No comments:

Post a Comment