×
Namespaces

Variants
Actions
(Difference between revisions)

HERE Maps API - How to create a Context Menu

From Nokia Developer Wiki
Jump to: navigation, search
jasfox (Talk | contribs)
m (Jasfox - - Example code)
jasfox (Talk | contribs)
m (Jasfox -)
 
(9 intermediate revisions by 2 users not shown)
Line 1: Line 1:
[[Category:Nokia Maps]][[Category:Code Snippet]][[Category:JavaScript]]
+
[[Category:HERE Maps]][[Category:JavaScript]][[Category:Code Examples]]
{{Abstract|This article explains how to add context menus to Nokia Maps and how to customise them.}}
+
{{Abstract|This article explains how to add context menus to HERE Maps and how to customise them.}}
  
  
{{ArticleMetaData
+
{{ArticleMetaData <!-- v1.2 -->
|sourcecode= <!-- Link to example source code e.g. [[Media:The Code Example ZIP.zip]] -->
+
|sourcecode=  [https://github.com/heremaps/examples/blob/master/maps_api_for_javascript/advanced-examples/context-menu.html context-menu.html]
 
|installfile= <!-- Link to installation file (e.g. [[Media:The Installation File.sis]]) -->
 
|installfile= <!-- Link to installation file (e.g. [[Media:The Installation File.sis]]) -->
 
|devices= <!-- Devices tested against - e.g. ''devices=Nokia 6131 NFC, Nokia C7-00'') -->
 
|devices= <!-- Devices tested against - e.g. ''devices=Nokia 6131 NFC, Nokia C7-00'') -->
Line 10: Line 10:
 
|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.3
+
|dependencies= HERE Maps 2.5.3
|keywords= Nokia Maps, component, Context Menu, Right Click, JavaScript
+
|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. -->
|id= <!-- Article Id (Knowledge base articles only) -->
+
|keywords= HERE Maps, component, Context Menu, Right Click, JavaScript
 
|language= <!-- Language category code for non-English topics - e.g. Lang-Chinese -->
 
|language= <!-- Language category code for non-English topics - e.g. Lang-Chinese -->
 
|translated-by= <!-- [[User:XXXX]] -->
 
|translated-by= <!-- [[User:XXXX]] -->
|translated-from-title= <!-- Title only -->  
+
|translated-from-title= <!-- Title only -->
 
|translated-from-id= <!-- Id of translated revision -->
 
|translated-from-id= <!-- Id of translated revision -->
|review-by=<!-- After re-review: [[User:username]] -->
+
|review-by= <!-- After re-review: [[User:username]] -->
 
|review-timestamp= <!-- After re-review: YYYYMMDD -->
 
|review-timestamp= <!-- After re-review: YYYYMMDD -->
|update-by=[[User:avnee.nathani]]
+
|update-by= [[User:avnee.nathani]]
|update-timestamp=20111231
+
|update-timestamp= 20111231
|creationdate=20110621
+
|creationdate= 20110621
|author=[[User:Maveric]]
+
|author= [[User:Maveric]]
 
}}
 
}}
  
 
{{SeeAlso|
 
{{SeeAlso|
* [http://developer.here.net/javascript_api Nokia Maps API]
+
* [http://developer.here.net/javascript_api HERE Maps API]
* [http://developer.here.net/apiexplorer/examples/api-for-js/context-menu/context-menu.html Context menu Example]
+
* [http://developer.here.net/apiexplorer/examples/api-for-js/context-menu/context-menu.html Context menu Example]
 
  }}
 
  }}
[[File:NokiaMapsRightClick.png|700px]]
+
[[File:NokiaMapsRightClick.png|70%]]
 
<br />
 
<br />
 
Context menus are used to display relevant information and options to the user on right-click:  
 
Context menus are used to display relevant information and options to the user on right-click:  
Line 43: Line 42:
 
==Prerequisites==
 
==Prerequisites==
  
Nokia Maps API supported web browser (basically any modern web browser)
+
HERE Maps API supported web browser (basically any modern web browser)
  
 
==Important note about maps credentials==
 
==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
+
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
 
[http://developer.here.net/terms_conditions Terms and Conditions] and check the [http://developer.here.net/web/guest/plans 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  [http://developer.here.net/docs/maps_js/topics/credentials.html#acquiring-credentials here]
 
[http://developer.here.net/terms_conditions Terms and Conditions] and check the [http://developer.here.net/web/guest/plans 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  [http://developer.here.net/docs/maps_js/topics/credentials.html#acquiring-credentials here]
  
Line 65: Line 64:
 
<code java> contextMenu.removeHandler(handler); </code>
 
<code java> contextMenu.removeHandler(handler); </code>
 
The {{Icode|removeHandler()}} method removes a whole context menu division and all items within it.
 
The {{Icode|removeHandler()}} method removes a whole context menu division and all items within it.
==Implementation==
 
 
 
The following statement is important:
 
<code java>map.components.add(contextMenu);</code>
 
Without this the context box is not rendered on the map.
 
  
 
==Example code==
 
==Example code==
Line 76: Line 69:
 
Remember to add in your own [[How to Obtain Your Own Nokia appID and Token| AppId and Token]].
 
Remember to add in your own [[How to Obtain Your Own Nokia appID and Token| AppId and Token]].
 
<code javascript>
 
<code javascript>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
function createContextMenu(map){
<html xmlns="http://www.w3.org/1999/xhtml">
+
contextMenu = new nokia.maps.map.component.ContextMenu();
<head>
+
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
+
/* Add Custom Context Menu Items */
<meta http-equiv="X-UA-Compatible" content="IE=7; IE=EmulateIE9" />
+
<title>Context Menu</title>
+
<script type="text/javascript" charset="UTF-8" src="http://api.maps.nokia.com/2.2.3/jsl.js"></script>
+
</head>
+
<body>
+
<form>
+
Click  to add/remove  a group of menu items from the context menu. <br />
+
<input type = "button" id ="addRemove" value = "Add Menu Items" onclick = "addRemoveGroup(extraMenuItems)"/>
+
  
</form>
+
//This adds three items with a menu separator
<div id="mapcanvas" style="width:1200px; height:800px;" >&nbsp;</div>
+
menuItems1 = function(contextMenuEvent, group) {
 +
group.addEntry("Menu Item 1",
 +
function(activationEvent) {alert("Menu Item 1 clicked");});
 +
group.addEntry("Menu Item 2",
 +
function(activationEvent) {alert("Menu Item 2 clicked");});
 +
group.addEntry("Menu Item 3",
 +
function(activationEvent) {alert("Menu Item 3 clicked");});
 +
}
 +
//This adds one item with a menu separator
 +
menuItems2 = function(contextMenuEvent, group) {
 +
group.addEntry("Menu Item 4",
 +
function(activationEvent) {alert("Menu Item 4 clicked");});
 +
}
 +
 +
//Two extra items added with a menu separator when Add/Remove button clicked
 +
extraMenuItems = function(contextMenuEvent,group){
 +
group.addEntry("Menu Item 5",
 +
function(activationEvent) {alert("Menu Item 5 clicked");});
 +
group.addEntry("Menu Item 6",
 +
function(activationEvent) {alert("Menu Item 6 clicked");});
 +
}
 +
 +
contextMenu.addHandler(menuItems1);
 +
contextMenu.addHandler(menuItems2);
 +
map.components.add(contextMenu);
 +
}
 +
</code>
 +
<code javascript>
 +
function addRemoveGroup(handler){
 +
if (isAdded == false){
 +
contextMenu.addHandler(handler);
 +
$('#addRemove').prop('value','Remove Menu Items');
 +
isAdded = true;
 +
} else {
 +
contextMenu.removeHandler(handler);
 +
$('#addRemove').prop('value','Add Menu Items');
 +
isAdded = false;
 +
}
 +
}</code>
  
+
A working example can be found at:
+
  <script type="text/javascript">
+
/*<![CDATA[*/
+
  
/////////////////////////////////////////////////////////////////////////////////////
+
http://rawgithub.com/heremaps/examples/master/maps_api_for_javascript/advanced-examples/context-menu.html
// 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");
+
//
+
/////////////////////////////////////////////////////////////////////////////////////
+
  
// Get the DOM node to which we will append the map
 
var mapContainer = document.getElementById("mapcanvas");
 
 
 
// Create a map inside the map container DOM node
 
var map = new nokia.maps.map.Display(mapContainer, {
 
components: [
 
new nokia.maps.map.component.panning.Drag(),
 
new nokia.maps.map.component.panning.Kinetic()
 
],
 
'zoomLevel': 13,
 
  'center': [18.975, 72.825833]
 
});
 
 
var contextMenu = new nokia.maps.map.component.ContextMenu();
 
 
/* Add Custom Context Menu Items */
 
 
//This adds three items with a menu separator
 
var menuItems1 = function(contextMenuEvent, group) {
 
group.addEntry("Menu Item 1",
 
function(activationEvent) {alert("Menu Item 1 clicked");});
 
group.addEntry("Menu Item 2",
 
function(activationEvent) {alert("Menu Item 2 clicked");});
 
group.addEntry("Menu Item 3",
 
function(activationEvent) {alert("Menu Item 3 clicked");});
 
    }
 
//This adds one item with a menu separator
 
var menuItems2 = function(contextMenuEvent, group) {
 
group.addEntry("Menu Item 4",
 
function(activationEvent) {alert("Menu Item 4 clicked");});
 
    }
 
//Two extra items added with a menu separator when Add/Remove button clicked
 
var extraMenuItems = function(contextMenuEvent,group){
 
group.addEntry("Menu Item 5",
 
function(activationEvent) {alert("Menu Item 5 clicked");});
 
  group.addEntry("Menu Item 6",
 
function(activationEvent) {alert("Menu Item 6 clicked");});
 
}
 
 
contextMenu.addHandler(menuItems1);
 
contextMenu.addHandler(menuItems2);
 
map.components.add(contextMenu);
 
 
var isAdded = false;   
 
 
 
// Simple function to add/remove a group of menu items...
 
function addRemoveGroup(handler){
 
if (isAdded == false){
 
contextMenu.addHandler(handler);
 
document.getElementById("addRemove").value ="Remove Menu Items";
 
isAdded = true;
 
} else {
 
contextMenu.removeHandler(handler);
 
document.getElementById("addRemove").value ="Add Menu Items";
 
isAdded = false;
 
}
 
}
 
/*]]>*/
 
</script>
 
    </body>
 
</html>
 
</code>
 
  
==For more on the Nokia Maps API==
+
==For more on the HERE Maps API==
  
Please check out the Nokia Maps API full documentation and API reference here:
+
Please check out the HERE Maps API full documentation and API reference here:
* [http://developer.here.net/javascript_api Nokia Maps API]
+
* [http://developer.here.net/javascript_api HERE Maps API]
  
 
You may also access the interactive API explorer
 
You may also access the interactive API explorer

Latest revision as of 13:28, 28 November 2013

This article explains how to add context menus to HERE Maps and how to customise them.


Article Metadata
Code Example
Source file: context-menu.html
Compatibility
Platform(s): Web browser
Dependencies: HERE Maps 2.5.3
Article
Keywords: HERE Maps, component, Context Menu, Right Click, JavaScript
Created: Maveric (21 Jun 2011)
Updated: avnee.nathani (31 Dec 2011)
Last edited: jasfox (28 Nov 2013)

70%
Context menus are used to display relevant information and options to the user on right-click:

Contents

[edit] Introduction

Context menus are useful because they can be customised to display items that are not present by default, and provide the user with added functionality. They are instantiated as follows:

var contextMenu = new nokia.maps.map.component.ContextMenu();

[edit] Prerequisites

HERE Maps API supported web browser (basically any modern web browser)

[edit] 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

[edit] Code Commentary

Context menu divisions are added to the context menu with the following syntax

 var menuItems1 = function(contextMenuEvent, group) {
group.addEntry("Menu Item 1",
function(activationEvent) {alert("Menu Item 1 clicked");});
group.addEntry("Menu Item 2",
function(activationEvent) {alert("Menu Item 2 clicked");});
group.addEntry("Menu Item 3",
function(activationEvent) {alert("Menu Item 3 clicked");});
contextMenu.addHandler(menuItems1);

The addHandler() function takes as a parameter a function which by default creates a new context menu division, in this case adding three new items to the new division.

 contextMenu.removeHandler(handler);

The removeHandler() method removes a whole context menu division and all items within it.

[edit] Example code

The example displays a context menu when the map is right clicked, Further alerts() are displayed when the menu items are clicked. Remember to add in your own AppId and Token.

function createContextMenu(map){
contextMenu = new nokia.maps.map.component.ContextMenu();
 
/* Add Custom Context Menu Items */
 
//This adds three items with a menu separator
menuItems1 = function(contextMenuEvent, group) {
group.addEntry("Menu Item 1",
function(activationEvent) {alert("Menu Item 1 clicked");});
group.addEntry("Menu Item 2",
function(activationEvent) {alert("Menu Item 2 clicked");});
group.addEntry("Menu Item 3",
function(activationEvent) {alert("Menu Item 3 clicked");});
}
//This adds one item with a menu separator
menuItems2 = function(contextMenuEvent, group) {
group.addEntry("Menu Item 4",
function(activationEvent) {alert("Menu Item 4 clicked");});
}
 
//Two extra items added with a menu separator when Add/Remove button clicked
extraMenuItems = function(contextMenuEvent,group){
group.addEntry("Menu Item 5",
function(activationEvent) {alert("Menu Item 5 clicked");});
group.addEntry("Menu Item 6",
function(activationEvent) {alert("Menu Item 6 clicked");});
}
 
contextMenu.addHandler(menuItems1);
contextMenu.addHandler(menuItems2);
map.components.add(contextMenu);
}
function addRemoveGroup(handler){
if (isAdded == false){
contextMenu.addHandler(handler);
$('#addRemove').prop('value','Remove Menu Items');
isAdded = true;
} else {
contextMenu.removeHandler(handler);
$('#addRemove').prop('value','Add Menu Items');
isAdded = false;
}
}

A working example can be found at:

http://rawgithub.com/heremaps/examples/master/maps_api_for_javascript/advanced-examples/context-menu.html


[edit] 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

[edit] Tested with

  • Google Chrome 11.0x
  • Mozilla Firefox 5.0b
This page was last modified on 28 November 2013, at 13:28.
492 page views in the last 30 days.
×