×
Namespaces

Variants
Actions
(Difference between revisions)

HERE Maps API - How to find the nearest Marker

From Nokia Developer Wiki
Jump to: navigation, search
Maveric (Talk | contribs)
m (Maveric -)
jasfox (Talk | contribs)
m (Jasfox - links)
(15 intermediate revisions by 4 users not shown)
Line 1: Line 1:
[[Category:Draft]]
+
[[Category:Nokia Maps]][[Category:Code Examples]][[Category:JavaScript]]
{{Abstract|This article explains how to find the nearest Marker on the map.}}  
+
{{Abstract|This code example shows how to find the nearest {{Icode|Marker}} from any point on the map. The code is useful for finding the {{Icode|Markers}} that  are located close to the user's current position or destination.}}
 +
 
 +
{{ArticleMetaData
 +
|sourcecode= [[Media:NearestMarkerExample.zip|NearestMarkerExample.zip]]
 +
|installfile= <!-- Link to installation file (e.g. [[Media:The Installation File.sis]]) -->
 +
|devices= Firefox , Internet Explorer, Google Chrome, Opera
 +
|sdk= <!-- SDK(s) built and tested against (e.g. [http://linktosdkdownload/ Nokia Qt SDK 1.1]) -->
 +
|platform= Web Browser
 +
|devicecompatability= <!-- Compatible devices e.g.: All* (must have internal GPS) -->
 +
|dependencies= Nokia Maps API 2.2.3
 +
|signing=<!-- Signing requirements - empty or one of: Self-Signed, DevCert, Manufacturer -->
 +
|capabilities= <!-- Capabilities required by the article/code example (e.g. Location, NetworkServices. -->
 +
|keywords= Nokia Maps, JavaScript, Marker
 +
|id= <!-- Article Id (Knowledge base articles only) -->
 +
|language= <!-- Language category code for non-English topics - e.g. Lang-Chinese -->
 +
|translated-by= <!-- [[User:XXXX]] -->
 +
|translated-from-title= <!-- Title only -->
 +
|translated-from-id= <!-- Id of translated revision -->
 +
|review-by=<!-- After re-review: [[User:username]] -->
 +
|review-timestamp= <!-- After re-review: YYYYMMDD -->
 +
|update-by= <!-- After significant update: [[User:username]]-->
 +
|update-timestamp= <!-- After significant update: YYYYMMDD -->
 +
|creationdate=20111113
 +
|author=[[User:Maveric]]
 +
}}
 +
{{SeeAlso|
 +
* [http://developer.here.net/javascript_api Nokia Maps API]
 +
* [http://developer.here.net/apiexplorer/examples/api-for-js/markers/marker.html Adding a Marker]}}
  
 
== Introduction ==
 
== Introduction ==
  
This example will demonstrate how to find the nearest map Marker from any point on the map. In the example there are five Markers on Nokia Maps and you can click anywhere on the map. Based on where you clicked, the script will calculate the distance to the Marker that is located closest to the point of your click. To display the result, the label text of the Marker is retrieved and shown on the page.
+
This example demonstrates how to find the nearest map {{Icode|Marker}} from any point on the map. In the example there are five {{Icode|Markers}} on the Nokia Map and you can click anywhere on the map. Based on where you clicked, the script will calculate the distance to the {{Icode|Marker}} that is located closest to the point of your click. To display the result, the label {{Icode|text}} of the {{Icode|Marker}} is retrieved and shown on the page.
  
== Summary ==
+
[[File:NearestMarkerExample..png]]
 
+
This method is useful when you need to determine what is located close to e.g. the user's current position, e.g. that of a walking distance.
+
  
 
== Example code ==
 
== Example code ==
  
<code java>
+
After setting up five markers, the code continues by adding a {{Icode|click}} event to the map.
<html>
+
<code javascript>
<head>
+
<title>Nokia Maps API - Find the nearest Marker example</title>
+
<script type="text/javascript" charset="UTF-8" src="http://api.maps.nokia.com/2.0.0/jsl.js"></script>
+
</head>
+
<body>   
+
<center><div id="map" style="z-index: -1; left:1px; top:100px; width:640px; height:480px;></div></center>   
+
<div style="z-index: -1; left:40px; top:450px; width: 800px; position: absolute;">
+
<p>Click anywhere on the Map to find out which of the five Markers is the nearest to that spot.</p>   
+
<p>You can also drag and drop any Marker to a new position.
+
<p>The nearest marker is: <span id="nearestMarker">*None*</span><br></div>
+
<script type="text/javascript">           
+
 
+
var nearestMarker = document.getElementById("nearestMarker");       
+
 
+
var map = new nokia.maps.map.Display(document.getElementById("map"),               
+
{components: [  new nokia.maps.map.component.Behavior() ]});               
+
 
+
map.setCenter([60.1697768639186, 24.82923586371288]);       
+
map.setZoomLevel(16);       
+
map.set("baseMapType", map.SATELLITE);                       
+
 
+
var marker1 = new nokia.maps.map.StandardMarker([60.1697768639186, 24.82923586371288],
+
{
+
text:  "Marker 1",                   
+
draggable: true,                   
+
});           
+
var marker2 = new nokia.maps.map.StandardMarker([60.170497332447866, 24.828592133548653 ],
+
{                   
+
text:  "Marker 2",                   
+
draggable: true,                   
+
});           
+
var marker3 = new nokia.maps.map.StandardMarker([60.17093227431904, 24.827707004572943 ],
+
{                   
+
text:  "Marker 3",                   
+
draggable: true,                   
+
});                   
+
 
+
var marker4 = new nokia.maps.map.StandardMarker([60.170057048001865, 24.826505374933163 ],
+
{                   
+
text:  "Marker 4",                   
+
draggable: true,                   
+
});           
+
 
+
var marker5 = new nokia.maps.map.StandardMarker([60.170025027084705, 24.82839365008141],
+
{                   
+
text:  "Marker 5",                   
+
draggable: true,                   
+
});                           
+
 
+
map.objects.add(marker1);       
+
map.objects.add(marker2);     
+
map.objects.add(marker3);       
+
map.objects.add(marker4);       
+
map.objects.add(marker5);           
+
 
+
 
var eventTarget = nokia.maps.dom.EventTarget;         
 
var eventTarget = nokia.maps.dom.EventTarget;         
 
var eventCheck = document.getElementById("map");                 
 
var eventCheck = document.getElementById("map");                 
Line 76: Line 46:
 
         findNearestMarker (coords);         
 
         findNearestMarker (coords);         
 
     }, false);             
 
     }, false);             
 
+
</code>
 +
The {{Icode|findNearestMarker()}} method iterates through each {{Icode|marker}} on the map and calculates the distance. The lowest distance so far is kept.
 +
<code javascript>
 
function findNearestMarker(coords) {  
 
function findNearestMarker(coords) {  
 
           var minDist = 1000;           
 
           var minDist = 1000;           
Line 91: Line 63:
 
         }             
 
         }             
  
nearestMarker.innerHTML = nearest_text;         
+
alert (nearest_text);         
 
}     
 
}     
</script>
 
</body>
 
</html>
 
 
</code>
 
</code>
  
== Tested with ==
+
The fully coded example can be found here :  [[Media:NearestMarkerExample.zip|NearestMarkerExample.zip]]
 
+
Firefox 7.0.1
+

Revision as of 18:49, 3 January 2013

This code example shows how to find the nearest Marker from any point on the map. The code is useful for finding the Markers that are located close to the user's current position or destination.

Article Metadata
Code ExampleTested with
Devices(s): Firefox , Internet Explorer, Google Chrome, Opera
Compatibility
Platform(s): Web Browser
Dependencies: Nokia Maps API 2.2.3
Article
Keywords: Nokia Maps, JavaScript, Marker
Created: Maveric (13 Nov 2011)
Last edited: jasfox (03 Jan 2013)

Introduction

This example demonstrates how to find the nearest map Marker from any point on the map. In the example there are five Markers on the Nokia Map and you can click anywhere on the map. Based on where you clicked, the script will calculate the distance to the Marker that is located closest to the point of your click. To display the result, the label text of the Marker is retrieved and shown on the page.

NearestMarkerExample..png

Example code

After setting up five markers, the code continues by adding a click event to the map.

var eventTarget = nokia.maps.dom.EventTarget;        
var eventCheck = document.getElementById("map");
eventTarget(eventCheck);
eventCheck.addListener("click", function(evt)
{ var coords = map.pixelToGeo(evt.targetX , evt.targetY);
findNearestMarker (coords);
}, false);

The findNearestMarker() method iterates through each marker on the map and calculates the distance. The lowest distance so far is kept.

function findNearestMarker(coords) { 
var minDist = 1000;
var nearest_text = "*None*";
for (i=0; i< map.objects.getLength(); i++)
{
if ( map.objects.get(i) instanceof nokia.maps.map.StandardMarker ) {
var markerDist = map.objects.get(i).coordinate.distance(coords);
if (markerDist < minDist) {
minDist = markerDist;
nearest_text = map.objects.get(i).text
}
}
}
 
alert (nearest_text);
}

The fully coded example can be found here : NearestMarkerExample.zip

265 page views in the last 30 days.
×