HERE Maps API - Zooming to all Markers
This article shows how to show a map and zoom to several markers with HERE Maps.
Article Metadata
Tested with
Compatibility
Article
Contents |
Introduction
An important case that necessitates zooming to all markers is when you have more than one Marker on the map and in a container, then would like to display all of the Markers for that container visible on the screen at the same time. To achieve this, you would need to know what the correct zoom level is such that all the Markers become visible.
Prerequisites
HERE Maps API supported web browser (basically any modern web browser)
The example assumes you have already added the HERE Maps to your web page as explained in the previous article HERE Maps API - Add Maps To Any Web Page
Important note about maps credentials
Nokia provides several services options within the Maps API offering. The service is free to use, but you must obtain and use authentication and authorization credentials to use the services. Please read the Terms and Conditions and check the Pricing Plans page to decide which business model best fits your needs. Authentication requires unique Maps API credentials, namely an AppId and a token. You can get these credentials free for free following the instructions here
Implementation
We will need the concept of BoundingBox when we define the area that will later cover the map markers. Here is the definition of it:
What is a Bounding box?
A bounding box defines a rectangular area in a geographic coordinate system. As the bounding box is specified by its top-left and bottom-right corner, the box is not necessarily the smallest rectangle spanned by these two points; it is possible to define bounding boxes that are wider than 180° or higher than 90° (i.e., by setting the longitude of top-left corner to a bigger value than the longitude of the bottom-right corner). Bounding box class is immutable.
Creating the map Markers
Let's first create three map Markers. Each marker will have a Geocoordinate of its own, and each is by default a StandardMarker.
myMarkerOne = new nokia.maps.map.Marker([22.1,10.1]);
myMarkerTwo = new nokia.maps.map.Marker([53.1,63.1]);
myMarkerThree = new nokia.maps.map.Marker([22.1,13.1]);
Creating the map Container and add the Markers into it
To carry the map Markers, we will also need to define a new Container. We will use the add() method to put each of the marker objects inside the Container:
var myContainer = new nokia.maps.map.Container()
myContainer.objects.add(myMarkerOne);
myContainer.objects.add(myMarkerTwo);
myContainer.objects.add(myMarkerThree);
map.objects.add(myContainer)
Zooming to the Bounding box covering all Markers in the Container:
Finally we will set the map ZoomLevel to cover all the Marker coordinates. This is achieved by calling the zoomTo() method on the map, to which we will give as parameter the object that will be received by calling the getBoundingBox() method on myContainer.
map.zoomTo(myContainer.getBoundingBox(),false,true);
After this defined BoundingBox is available to be used by the zoomTo() function, which will zoom the map to the given bounding box. If the keepCenter flag (default is false) is used, the size of the viewport will be increased such that the original center is still located in the center of the viewport.
Note: This operation may use a platform specific animation if this is indicated by the corresponding optional animation string.
Example code
This example zooms out to fit all markers onto the map. Remember to add in your own AppId and Token.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Zoom to all markers</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<script type="text/javascript"
src="http://api.maps.nokia.com/2.2.3/jsl.js" charset="utf-8">
</script>
</head>
<body>
<div id="mapContainer" style="z-index: -1; left:0px; top:0px; width: 100%; height: 80%; position: absolute;"></div>
<script type="text/javascript">
/////////////////////////////////////////////////////////////////////////////////////
// Don't forget to set your API credentials
//
// Replace with your appId and token which you can obtain when you
// register on http://api.developer.nokia.com/
//
nokia.Settings.set( "appId", "YOUR APP ID GOES HERE");
nokia.Settings.set( "authenticationToken", "YOUR AUTHENTICATION TOKEN GOES HERE");
//
/////////////////////////////////////////////////////////////////////////////////////
var map = new nokia.maps.map.Display(document.getElementById("mapContainer"), {
zoomLevel: 8,
center: [19.119, 72.8957]
});
myMarkerOne = new nokia.maps.map.Marker([19.119, 72.8957]);
myMarkerTwo = new nokia.maps.map.Marker([19.119, 73.8957]);
myMarkerThree = new nokia.maps.map.Marker([19.119, 74.8957]);
var myContainer = new nokia.maps.map.Container()
myContainer.objects.add(myMarkerOne);
myContainer.objects.add(myMarkerTwo);
myContainer.objects.add(myMarkerThree);
map.objects.add(myContainer)
map.zoomTo(myContainer.getBoundingBox(),false,true);
</script>
</body>
</html>
Screenshot
For more on the HERE Maps API
Please check out the HERE Maps API full documentation and API reference here:
You may also access the interactive API explorer



Avnee.nathani - Article rename
Article needs to be renamed to Nokia Maps API - Zooming to all Markers.
Thanks!avnee.nathani 13:21, 31 December 2011 (EET)
Hamishwillee - Will do shortly!
Thanks for your branding updateshamishwillee 00:39, 2 January 2012 (EET)
Amnesia7 - Top markers being cut off
I'm having trouble with markers at the top of the map when I do zoomTo being cut off - I can see the oval shape shadow of where the marker is but the tear-shaped marker image is off the top of my map area (out of view) so unless you know to look for it then you don't realise that that particular marker is displayed.
I'm having to apply the zoomTo(boundingbox) and then zooming out once to make sure that markers are always displayed.
I think Nokia maps should be doing this for me by checking that the marker location (oval shape) and the marker image (tear-shaped marker) will fit as well.
I couldn't find anywhere to report bugs so I'm posting a comment here instead in the hope someone will read it and reply.amnesia7 19:55, 10 February 2012 (EET)