Explore the largest directory of APIs & SDKs for maps, routes and search.
Our APIs, SDKs, and live updating map data available for 238 nations give developers tools to build better mapping, navigation, and search experiences across platforms.
This page will be continually enhanced to offer more insights and reference material on how to best utilize our Vector Maps JS SDK for Web.
You can get your api key to be used in this document here: https://apis.mappls.com/console/
Version | Remarks | Author |
---|---|---|
3.0 | Initial Commit | Mappls API Team (MS) |
The Interactive Maps JavaScript SDK for Web helps render and display map tiles while customizing the map's look and feel on mobile or web browser. Mappls (MapmyIndia) is India's leading Map provider, and produces various SDKs, including Web SDKs (JavaScript libraries) for mobile-friendly interactive maps which are easy to use & high on performance. This SDK is a collection of classes and functions that can be used to implement a host of map features.
Features:
-
Zoom: Pan-able map of India with 19 zoom levels, 22 being the highest (most detailed) and 4 being the lowest (country level) map display.
-
Overlays: The map is the key for any sort of business and understanding this, we at Mappls provide quick default overlays to reduce the boiler plate code for your code base.
- Map Markers (Pushpins): Point to any location using default pushpin behaviors and provide it your own style to make it look more tailored for your application. Note: Have a look at the Plug-ins section to find out what makes it cooler.
- Info Windows (Pop-ups): On a Map Clicking is a native behavior understanding this, we provide out of the box info windows such that if a pushpin is clicked an info window pops up open and you can show your content related to that location there. You can style it to make it behave as required for your UI to be magnificent.
- Polylines: Connect any two points or even more with out of the box Mappls polylines dedicated to high customizability and performance to suit your use cases. Note: Have a look at the plug-ins we provide to make your polylines have an edge up and suit your use cases in a more integrated manner.
- Polygons: Show a region in a spotlight with a polygon and show various localized data based on it.
- Circles: Circles are way of marking a territory without too much interaction by the user.You can draw a circle around a given location.
-
Controls: because we understand the use cases with a map we provide the below out of the box controls that can be turned off or on based on your requirement and because we care, we provide you to override our controls outlook by providing your own styles or CSS so that you can move them or customize them completely. Controls include:
- Zoom Bar: (appears by default at the centre on the right side). Helps to provide zoom in and zoom out functionality to the map by default.
- Map Layer Control: Allows to change the map view from basic to hybrid and regional. Also allows to show traffic layer on map.
-
Fullscreen Control: Allows to view a full screen map.
-
Current Location Control: Scopes the Map to the viewer’s current location.**
Note:** The location settings must be turned on and must allow the site to fetch the location for this control to work.
Please Note: Mappls(MapmyIndia) may extend and enhance functionality for its interactive map API in future, which will be clearly documented in this section, and which will be available through the Mappls.Map class and Mappls.* set of classes generally.
Now that you’re all caught up with the features let’s get down right to them and look at how can you integrate our Interactive Map to your Website from scratch.
The easiest way to start loading maps in a web page is with a “Hello World” sample code, you can download or view a working “Hello World” sample from the links for adding your first marker below.
Follow the below steps to integrate MapmyIndia interactive Maps into your existing code base or even a File -> New Project.
- Declare application as HTML5:
Define
<!DOCTYPE html>
on top of your HTML. - Integrate Interactive maps from Mappls into your browser application by simply including Mappls's interactive map API in your script source in the head section.
<script src="https://apis.mappls.com/advancedmaps/api/<key or token>/map_sdk?v=3.0&layer=vector"></script>
Important:
-
bearer token in place of
<key>
-
layer: Vector/raster default vector
-
Define a style in the head section to load in your CSS.
<style> html, body, #map1 {margin: 0;padding: 0;width: 100%;height: 100%;} </style>
- Define a div object in the body tag of the HTML where you want the Mappls Map to show up.
<div id="map"></div>;
- Initialize a Mappls Map by simply calling new Mappls.Map() in the JavaScript and passing it at the minimum, the div object in which you want the map populated. (All other parameters are optional.)
map = new Mappls.Map('map', {center:{lat:28.612964,lng:77.229463} });
- Hello World
<html>
<head>
<title>Hello, World</title>
<meta name="viewport" content="initial-scale=1.0">
<meta charset="utf-8">
<style>
html,
body,
#map {
margin: 0;
padding: 0;
width: 100%;
height: 100vh;
}
</style>
<script src="https://apis.mappls.com/advancedmaps/api/<key>/map_sdk?layer=vector&v=3.0&callback=loadMap" defer async></script>
</head>
<body>
<div id="map"></div>
<script>
var map;
function loadMap()
{
map = new Mappls.Map('map', {center: [28.544,77.5454]});
}
</script>
</body>
</html>
- Map Methods & Events
Markers are effortless way of pointing to a location, so getting right to it, you can go ahead and add markers that we provide out of the box but just in case you want to add your own, we’ve got that covered for you as well. There are 3 main categories of markers that you can add namely,
- Stock Markers: The one you get out of the box using our Interactive Vector Maps SDK and you can select from a lot of choices.
- Custom Marker: Just in case you want to provide your own markers, we’ve handled that for you as well.
- HTML Marker: In case you don’t want to add in an image you can use HTML to create a marker and then plot it on the map as well.
For more details, please read article in Markers
Now, that you have a basic understanding of Markers, Functions and Events let’s talk about Info Windows or Pop-Ups.
The easiest way to start loading maps with simple markers in a web page is with a “Hello World” sample code, you can download or view a working “Hello World” sample from the links above.
In the sample, we have a case of a map scenario where objective is plotting a pushpin that says hello world on click.
new Mappls.Marker
var marker = new Mappls.Marker({
map: map,
position: {"lat": 28.519467,"lng":77.223150}
});
<html>
<head>
<title>First Marker</title>
<meta name="viewport" content="initial-scale=1.0">
<meta charset="utf-8">
<style>
html,
body,
#map {
margin: 0;
padding: 0;
width: 100%;
height: 100vh;
}
</style>
<script src="https://apis.mappls.com/advancedmaps/api/<key or token>/map_sdk?layer=vector&v=3.0&callback=loadMap" defer async></script>
</head>
<body>
<div id="map"></div>
<script>
var map;
function loadMap()
{
map = new Mappls.Map('map', {center: [28.544,77.5454]});
map.addListener('load', function () {
var marker= new Mappls.Marker({
map: map,
position: {"lat": 28.544,"lng":77.5454}
});
});
}
</script>
</body>
</html>
You can interact with properties of the Map we provide to suite your use case and add additional customizability to your Map layer using the features it has to offer. These functions are a quick go to in case of an event.
For details, please read article in Marker Methods
var geoData={
"type": "FeatureCollection",
"features": [{
"type": "Feature",
"properties": {"htmlPopup":"noida"},
"geometry": {"type": "Point",
"coordinates": [28.544,77.5454]}
},{
"type": "Feature",
"properties": {"htmlPopup":"faridabad"},
"geometry": {"type": "Point",
"coordinates": [28.27189158,77.2158203125]}
},{
"type": "Feature",
"properties": {"htmlPopup":"delhi"},
"geometry": {"type": "Point",
"coordinates": [28.549511,77.2678250]}
}]
};
var marker=Mappls.Marker({map:map,position:geoData,icon_url:'https://apis.mappls.com/map_v3/1.png',clusters:true,fitbounds:true,fitboundOptions:{padding: 120,duration:1000},popupOptions:{offset: {'bottom': [0, -20]}}});
Info Windows are a convenient way of showing data about a marker or in simple words: what that marker stands for. The Native behaviour of a user to know about any marker is to try and click on it to know what it’s all about and showing an info window would be the way to go about it:
Please Note: MapmyIndia interactive map SDK supports a default info window that you can leverage but we want you to have an option to customize your info window to fit in with your UI and you can do so in the CSS.
For a quick sample or a demo you can follow up with the links on top.
You can declare an info window in your CSS and write up a quick function to generate data in that info window and on marker click event simple open that info window.
For details , please read article in Info Windows
<html>
<head>
<title>Infowindow</title>
<meta name="viewport" content="initial-scale=1.0">
<meta charset="utf-8">
<style>
html,
body,
#map {
margin: 0;
padding: 0;
width: 100%;
height: 100vh;
}
</style>
<script src="https://apis.mappls.com/advancedmaps/api/<key or token>/map_sdk?layer=vector&v=3.0&callback=loadMap" defer async></script>
</head>
<body>
<div id="map"></div>
<script>
var map;
function loadMap()
{
map = new Mappls.Map('map', {center: [28.544,77.5454]});
map.addListener('load', function () {
var window=new Mappls.InfoWindow({map:map,content:"MyMapContent",position:{lat: 28.529467 ,lng: 77.223150}});
});
}
</script>
</body>
</html>
Polylines are a way of showing movement or transit on a map. We at Mappls understand the ways you can leverage the features offered by a map and one among them is a Polyline.
Polylines are continuous lines consisting of one or more line segments (preferably a geopath). To add a polyline, initialize map as shown in the previous sections and then create a data set. What is a data set? The Data set is the collection of points (latitude and longitude) over which you want the polyline to be drawn.
For details , please read article in Polylines
<html>
<head>
<title>Polyline</title>
<meta name="viewport" content="initial-scale=1.0">
<meta charset="utf-8">
<style>
html,
body,
#map {
margin: 0;
padding: 0;
width: 100%;
height: 100vh;
}
</style>
<script src="https://apis.mappls.com/advancedmaps/api/<key or token>/map_sdk?layer=vector&v=3.0&callback=loadMap" defer async></script>
</head>
<body>
<div id="map"></div>
<script>
var map;
function loadMap()
{
map = new Mappls.Map('map', {center: [28.544,77.5454]});
map.addListener('load', function () {
var pts=[{lat:28.55108, lng:77.26913},{lat:28.55106,lng: 77.26906},{lat:28.55105,lng: 77.26897},{lat:28.55101,lng:77.26872},{lat:28.55099, lng:77.26849},{lat:28.55097, lng:77.26831},{lat:28.55093, lng:77.26794},{lat:28.55089, lng:77.2676},{lat:28.55123, lng:77.26756},{lat:28.55145, lng:77.26758},{lat:28.55168, lng:77.26758},{lat:28.55175, lng:77.26759},{lat:28.55177, lng:77.26755},{lat:28.55179, lng:77.26753}];
var polyline = new Mappls.Polyline({
map:map,
paths: pts,
strokeColor: '#333',
strokeOpacity: 1.0,
strokeWeight: 5,
fitbounds:true
});
});
}
</script>
</body>
</html>
Drag polyline from anywhere & get callback polyline data. By default the value is false.
editable: true
Polyline draw point by point with speed
animate: {path:true/false,speed:5}
animate: {
speed:5
icon_width: 35 / “35”,
icon_height: 15 / “15”,,
icon_url: (icon_url),
repeat: true/false,
},
Remove Polyline
Mappls.remove({map: map, layer: polyline);
In real case scenarios, you’ll need to get the data set on the fly or from a service and then you can leverage the events and functions we’ve learnt about how to plot the polyline. You also might need to beautify your polyline or add transitions for your UI to look marvelous.
The polyline is just the beginning, but sometimes you’ll need to mark a territory to properly showcase your information. In such cases a polyline might not be the perfect fit but Polygons and Circles may be the apt choice.
Polygons are a way of showing a territory. In cases where you want to showcase data over an area, polygons are your best pick. You can use them to show Geozones as well.
It’s very like generating a polyline, the basic steps remain the same, create a Data set, generate a polygon and add it to the map.
For details , please read article in Polygon
Simple Polygon
<html>
<head>
<title>Polygon</title>
<meta name="viewport" content="initial-scale=1.0">
<meta charset="utf-8">
<style>
html,
body,
#map {
margin: 0;
padding: 0;
width: 100%;
height: 100vh;
}
</style>
<script src="https://apis.mappls.com/advancedmaps/api/<key or token>/map_sdk?layer=vector&v=3.0&callback=loadMap" defer async></script>
</head>
<body>
<div id="map"></div>
<script>
var map;
function loadMap()
{
map = new Mappls.Map('map', {center: [28.544,77.5454]});
map.addListener('load', function () {
var pts=[{lat: 28.774, lng: 80.190},{lat: 28.466, lng: 76.118},{lat: 27.321, lng: 77.757},{lat: 27.771, lng: 80.757}];
new Mappls.Polygon({map:map,paths: pts,fillColor:"blue"});
});
}
</script>
</body>
</html>
This method can draw polyline or polygon directly from map with click event with callback methods.
Double Click to finish draw event.
//Polyline
var polylineoptions={strokeColor: "blue",strokeOpacity:1.0,strokeWeight: 9,lineGap:0,popupHtml:'Route 1',popupOptions:{offset: {'bottom': [0, -20]}}}
Mappls.draw({map:map,type:'polyline',callback:draw_callback,options:polylineoptions});
//Polygon
var polygonoptions={fillColor:'#333'}
Mappls.draw({map:map,type:'polygon',callback:draw_callback,options:polygonoptions});
function draw_callback(data)
{
console.log(data);
}
Now that we’ve covered polygons let’s have a look at Circles which provide another way of showcasing territory.
Circles are way of marking a territory without too much interaction by the user. A circle only has two important values:
- The Centre point of the circle (in this case it’ll be a latitude with a longitude).
- The Radius of the circle.
With the two values, you can easily define a quick area of interest on a map.
For details , please read article in Circle
Mappls.Circle()
<html>
<head>
<title>Circle</title>
<meta name="viewport" content="initial-scale=1.0">
<meta charset="utf-8">
<style>
html,
body,
#map {
margin: 0;
padding: 0;
width: 100%;
height: 100vh;
}
</style>
<script src="https://apis.mappls.com/advancedmaps/api/<key or token>/map_sdk?layer=vector&v=3.0&callback=loadMap" defer async></script>
</head>
<body>
<div id="map"></div>
<script>
var map;
function loadMap()
{
map = new Mappls.Map('map', {center: [28.544,77.5454]});
map.addListener('load', function () {
var mappls_circle = new Mappls.Circle({
map: map,
center: {"lat": 28.544 ,"lng": 77.5454},
radius: 1000});
});
}
</script>
</body>
</html>
For details , please read article in Heatmap Overlays
var pts=[ {lat: 28.774, lng: 80.190}, {lat: 28.466, lng: 76.118}, {lat: 27.321, lng: 77.757}, {lat: 27.774, lng: 80.190} ];
var heat_map=new Mappls.HeatmapLayer({map:map,data:pts,fitbounds:true});
<html>
<head>
<title>Heatmap</title>
<meta name="viewport" content="initial-scale=1.0">
<meta charset="utf-8">
<style>
html,
body,
#map {
margin: 0;
padding: 0;
width: 100%;
height: 100vh;
}
</style>
<script src="https://apis.mappls.com/advancedmaps/api/<key or token>/map_sdk?layer=vector&v=3.0&callback=loadMap" defer async></script>
</head>
<body>
<div id="map"></div>
<script>
var map;
function loadMap()
{
map = new Mappls.Map('map', {center: [28.544,77.5454]});
map.addListener('load', function () {
var pts=[{lat:28.55108, lng:77.26913},{lat:28.55106,lng: 77.26906},{lat:28.55105,lng: 77.26897},{lat:28.55101,lng:77.26872},{lat:28.55099, lng:77.26849},{lat:28.55097, lng:77.26831},{lat:28.55093, lng:77.26794},{lat:28.55089, lng:77.2676},{lat:28.55123, lng:77.26756},{lat:28.55145, lng:77.26758},{lat:28.55168, lng:77.26758},{lat:28.55175, lng:77.26759},{lat:28.55177, lng:77.26755},{lat:28.55179, lng:77.26753}];
var gradient = [ 'rgba(0, 255, 255, 0)', 'rgba(0, 255, 255, 1)', 'rgba(0, 191, 255, 1)', 'rgba(0, 127, 255, 1)', 'rgba(0, 63, 255, 1)', 'rgba(0, 0, 255, 1)', 'rgba(0, 0, 223, 1)', 'rgba(0, 0, 191, 1)', 'rgba(0, 0, 159, 1)', 'rgba(0, 0, 127, 1)', 'rgba(63, 0, 91, 1)', 'rgba(127, 0, 63, 1)', 'rgba(191, 0, 31, 1)', 'brown' ];
var heat_map=new Mappls.HeatmapLayer({map:map,data:pts,gradient:gradient,fitbounds:true});
});
}
</script>
</body>
</html>
For details, please read article in GeoJSON
GeoJSON Supports marker, polyline and polygon
Marker Property support in geojson
- description
- icon
- icon-size
- icon-offset
- text
- text-size
- text-offset
polyline Property support in geojson:
- stroke
- stroke-opacity
- stroke-width
polygon Property support in geojson:
- stroke
- fill color
- fill opacity
new Mappls.addGeoJson({map:map,data:geoData,fitbounds:true,cType:0});
<html>
<head>
<title>Geojson Layer</title>
<meta name="viewport" content="initial-scale=1.0">
<meta charset="utf-8">
<style>
html,
body,
#map {
margin: 0;
padding: 0;
width: 100%;
height: 100vh;
}
</style>
<script src="https://apis.mappls.com/advancedmaps/api/<key or token>/map_sdk?layer=vector&v=3.0&callback=loadMap" defer async></script>
</head>
<body>
<div id="map"></div>
<script>
var map;
function loadMap()
{
map = new Mappls.Map('map', {center: [28.544,77.5454]});
map.addListener('load', function () {
var mixjson={
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"geometry": {"type": "Point","coordinates": [28.54950,77.2678540]
},
"properties": {
"name": "MapmyIndia old Office",
"description": "Okhla delhi",
"icon": "https://apis.mappls.com/map_v3/1.png",
"icon-size":1,
"text":"",
"text-size":20,
"text-offset":[0,0],
"text-color":"red",
}
},
{
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [28.5510446,77.268952]
},
"properties": {
"name": "<div onclick=\"function1()\">MapmyIndia New Office</div>",
"description": "68,Okhla delhi",
"icon": "https://apis.mappls.com/map_v3/1.png",
"icon-size":0.55,
"text":"1",
"icon-offset":[0,-20],
}
},
{
"type": "Feature",
"geometry": {
"type": "LineString",
"coordinates": [
[28.551042,77.268953],
[28.551005,77.268649],
[28.550986,77.268392],
[28.550967,77.268231],
[28.550967,77.268177],
[28.550958,77.268016],
[28.55092,77.267587],
[28.550722,77.267651],
[28.55042,77.267823],
[28.550128,77.267802],
[28.549751,77.267995],
[28.549652,77.268039]
]
},
"properties": {
"name": "Direction1",
"description": "Direction2",
"stroke": "#33CC00",
"stroke-opacity": 0.6509803921568628,
"stroke-width": 10,
}
},
{
"type": "Feature",
"geometry": {
"type": "Polygon",
"coordinates": [[
[28.550868798522835,77.26878225803375],
[28.550868798522835,77.26899683475493],
[28.550383454405356,77.26903975009918],
[28.550388166494926,77.26883590221404]
]]
},
"properties": {
"name": "MapmyIndia Head Office",
"stroke": "#33CC00",
"stroke-opacity": 0.6509803921568628,
"stroke-width": 3,
"fill": "#33CC00",
"fill-opacity": 0.6509803921568628
}
}
]
};
var jsonData=Mappls.addGeoJson({map:map,data:mixjson,fitbounds:true});
});
}
</script>
</body>
</html>
Remove Layer
new Mappls.remove({map:map,layer:jsonData});
KML: Keyhole Markup Language is a file format used to display geographic data on maps. Using this plugin, you can overlay KML data over Mappls Maps for web.
- Only KML data supported.
- KML file must have absolute path or raw KML string (in variable or in textbox)
- All internal URL's path must be absolute. (for icon path etc)
- File must not be password protected.
- File must be CORS enabled from the server where they are hosted.
- File must follow KML standard strictly.
How to allow add libraries=kml in initial load ie.
<script src="https://apis.mappls.com/advancedmaps/api/<key or token>/map_sdk?v=3.0&layer=vector&libraries=kml"></script>
- KML Method
var url="https://www.mappls.com/api/advanced-maps/doc/sample/mmi.kml";
Mappls.KmlLayer({map:map,url:url,cType:1,fitbounds:true,fitboundOptions:{padding:200}});
<html>
<head>
<title>Geojson Layer</title>
<meta name="viewport" content="initial-scale=1.0">
<meta charset="utf-8">
<style>
html,
body,
#map {
margin: 0;
padding: 0;
width: 100%;
height: 100vh;
}
</style>
<script src="https://apis.mappls.com/advancedmaps/api/<key or token>/map_sdk?layer=vector&v=3.0&libraries=kml&callback=loadMap" defer async></script>
</head>
<body>
<div id="map"></div>
<script>
var map;
function loadMap()
{
map = new Mappls.Map('map', {center: [28.544,77.5454]});
map.addListener('load', function () {
var url="https://www.mappls.com/api/advanced-maps/doc/sample/mmi.kml";
Mappls.KmlLayer({map:map,url:url,fitbounds:true,fitboundOptions:{padding:200}});
});
}
</script>
</body>
</html>
Please Note: For a more detailed code snippet follow the links provided above to see the sample code or see a live demo.
For any queries and support, please contact:
Email us at [email protected]
Ask a question under the mapmyindia-api
Need support? contact us!
Read about the latest updates & customer stories
© Copyright 2022 CE Info Systems Ltd. All Rights Reserved.