HERE Maps API - Create map markers from XML data
m (Jasfox - Add Category.) |
m (Jasfox - links) |
||
| (One intermediate revision by one user not shown) | |||
| Line 9: | Line 9: | ||
|platform= Web browser | |platform= Web browser | ||
|devicecompatability= <!-- Compatible devices e.g.: All* (must have internal GPS) --> | |devicecompatability= <!-- Compatible devices e.g.: All* (must have internal GPS) --> | ||
| − | |dependencies=Nokia Maps 2.2. | + | |dependencies=Nokia Maps 2.2.3 |
|signing=<!-- Signing requirements - empty or one of: Self-Signed, DevCert, Manufacturer --> | |signing=<!-- Signing requirements - empty or one of: Self-Signed, DevCert, Manufacturer --> | ||
|capabilities= <!-- Capabilities required by the article/code example (e.g. Location, NetworkServices. --> | |capabilities= <!-- Capabilities required by the article/code example (e.g. Location, NetworkServices. --> | ||
| Line 26: | Line 26: | ||
}} | }} | ||
{{SeeAlso| | {{SeeAlso| | ||
| − | * [http:// | + | * [http://developer.here.net/javascript_api Nokia Maps API] |
| − | * [http:// | + | * [http://developer.here.net/apiexplorer/examples/api-for-js/markers/marker.html Adding a Marker] |
| − | * [http:// | + | * [http://developer.here.net/apiexplorer/examples/api-for-js/data-visualization/map-with-interactive-kml-objects.html Loading a KML file example] |
* [[Nokia Maps API - How to display KML file data on the map]] | * [[Nokia Maps API - How to display KML file data on the map]] | ||
* [[Reading XML Map Marker data with the Maps API for Java ME]] | * [[Reading XML Map Marker data with the Maps API for Java ME]] | ||
| Line 62: | Line 62: | ||
Both the Nokia Maps API for JavaScript and the jQuery library need to be referenced in the header. | Both the Nokia Maps API for JavaScript and the jQuery library need to be referenced in the header. | ||
<code javascript> | <code javascript> | ||
| − | <script type="text/javascript" src="http://api.maps.nokia.com/2.2. | + | <script type="text/javascript" src="http://api.maps.nokia.com/2.2.3/jsl.js" charset="utf-8"></script> |
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script> | <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script> | ||
</code> | </code> | ||
| Line 170: | Line 170: | ||
Since the latest version of the Nokia Maps API is able to natively render KML files, it would make sense to transform the XML into KML using XSLT. You can copy the ''markers.xml'' file from [[Media:Markersxml.zip]] | Since the latest version of the Nokia Maps API is able to natively render KML files, it would make sense to transform the XML into KML using XSLT. You can copy the ''markers.xml'' file from [[Media:Markersxml.zip]] | ||
into an [http://www.w3schools.com/xsl/tryxslt.asp?xmlfile=cdcatalog&xsltfile=cdcatalog XSLT Editor] and use the the XSLT stylesheet described below.The KML can then be loaded directly onto a map | into an [http://www.w3schools.com/xsl/tryxslt.asp?xmlfile=cdcatalog&xsltfile=cdcatalog XSLT Editor] and use the the XSLT stylesheet described below.The KML can then be loaded directly onto a map | ||
| − | using the code from the [http:// | + | using the code from the [http://developer.here.net/apiexplorer/examples/api-for-js/data-visualization/map-with-interactive-kml-objects.html Loading a KML file example] on the [http://developer.here.net/javascript_api_explorer API explorer] |
<code xml> | <code xml> | ||
| Line 194: | Line 194: | ||
</code> | </code> | ||
| − | ==For more on Nokia Maps API== | + | ==For more on the Nokia Maps API== |
Please check out the Nokia Maps API full documentation and API reference here: | Please check out the Nokia Maps API full documentation and API reference here: | ||
| − | * http:// | + | * [http://developer.here.net/javascript_api Nokia Maps API] |
| − | You may also access the interactive | + | You may also access the interactive API explorer |
| − | * http:// | + | * [http://developer.here.net/javascript_api_explorer API explorer] |
Revision as of 18:15, 3 January 2013
This article explains how to read a structured XML file and create map markers based on the data.
Article Metadata
Code Example
Tested with
Compatibility
Article
Contents |
Introduction
Sometimes it is useful to have the data for a map, e.g. markers, in a separate file. This article provides an example which you can use to generate map content from an XML file. The example uses JavaScript and jQuery, and processes an XML data file of the following format:
<?xml version="1.0"?>
<markers>
<marker>
<name>M1</name>
<address>ADDRESS 1</address>
<lat>52.516617</lat>
<lng>13.377675</lng>
</marker>
...etc
Prerequisites
- Nokia Maps API supported web browser (basically any modern web browser).
- jQuery downloaded and installed.
- Change the directory names for your own version of the example, if needed.
Example code
Note that the example code - Markersxml.zip - leaves you room to implement your own InfoBubbles, and some other functionality (for e.g. the behaviour of the map and availability of components) is there if you need it, otherwise you can remove it. Feel free to copy and modify for your own purposes!
Header
Both the Nokia Maps API for JavaScript and the jQuery library need to be referenced in the header.
<script type="text/javascript" src="http://api.maps.nokia.com/2.2.3/jsl.js" charset="utf-8"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
Body
The Map is set up in init() the usual manner.
function init(){
// Here we create an instance of Nokia Maps within a Container.
mapContainer = document.getElementById("map");
myInfoBubbles = new nokia.maps.map.component.InfoBubbles();
myMap = nokia.maps.map,
map = new myMap.Display(mapContainer, {
center: [52.59, 13.3], zoomLevel: 10,
components: [ new myMap.component.Behavior(),
new nokia.maps.map.component.ZoomBar(),
new nokia.maps.map.component.Overview(),
new nokia.maps.map.component.TypeSelector(),
new nokia.maps.map.component.ScaleBar(),
myInfoBubbles ]
});
// Define the XML filename to read that contains the marker data
placeMarkersOnMaps('markers.xml');
}
When the HTML page body section is loaded the placeMarkersOnMaps() method will be called. This function gets passed the marker XML data file name. The location of the XML file is relative to the URL of the HTML page.
function placeMarkersOnMaps(filename)
{
var counter = 0;
$.ajax({
type: "GET",
url: filename ,
dataType: "xml",
success: parseXml,
error : err
});
}
function err (){
alert("An Error has occurred.");
}
The parseXml() function is the meat of the example. It uses standard jQuery parsing to retrieve the elements from the XML file.
function parseXml(xml)
{
var container = new nokia.maps.map.Container();
$(xml).find("marker").each(function(){
//Read the name, address, latitude and longitude for each Marker
var nme = $(this).find('name').text();
var address = $(this).find('address').text();
var lat = $(this).find('lat').text();
var lng = $(this).find('lng').text();
//Put each marker on the map as the data has been read.
var markerCoords = new nokia.maps.geo.Coordinate(parseFloat(lat), parseFloat(lng));
var marker = new nokia.maps.map.StandardMarker(markerCoords, {text:nme});
container.objects.add(marker);
});
// Add the marker container .
map.objects.add(container);
// Zoom into the markers.
alert("Markers have been loaded. Hit OK to zoom the map into the area covering the markers.");
map.zoomTo(container.getBoundingBox(), false);
}
Example XML file
The file to be parsed is in the following format - the full XML file can be found in Media:Markersxml.zip
<?xml version="1.0"?>
<markers>
<marker>
<name>M1</name>
<address>ADDRESS 1</address>
<lat>52.516617</lat>
<lng>13.377675</lng>
</marker>
.... etc
</markers>
Summary
The following screenshot shows how the XML has been parsed
Edit the script and file for your own purposes, hope you find this article useful.
Alternative Solution
Since the latest version of the Nokia Maps API is able to natively render KML files, it would make sense to transform the XML into KML using XSLT. You can copy the markers.xml file from Media:Markersxml.zip into an XSLT Editor and use the the XSLT stylesheet described below.The KML can then be loaded directly onto a map using the code from the Loading a KML file example on the API explorer
<?xml version="1.0" encoding="ISO-8859-1"?>
<!-- Edited by XMLSpy® -->
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="markers">
<Document>
<xsl:for-each select="marker">
<Placemark>
<name><xsl:value-of select="name"/></name>
<address><xsl:value-of select="address"/></address>
<coordinates>
<xsl:value-of select="lat"/>,<xsl:value-of select="lng"/>,0
</coordinates>
</Placemark>
</xsl:for-each>
</Document>
</xsl:template>
</xsl:stylesheet>
For more on the Nokia Maps API
Please check out the Nokia Maps API full documentation and API reference here:
You may also access the interactive API explorer


