Tutorials / Add a HERE Map into your Vue.js application
Last Updated: July 05, 2020
Introduction
Duration is 15 min
Vue.js is a popular JavaScript framework among developers. This popularity is in part due to the fact that Vue.js is easy to integrate into existing projects. You can build dynamic, scalable applications from scratch with it quickly.
In this tutorial, you will create an interactive HERE Map using Vue.js and the HERE JavaScript API. You will create a reusable component that can be added to your existing Vue.js application.
Integrate HERE JavaScript API in Vue.js application
Create a reusable map component
Render the HereMap component
Installing Vue CLI in your computer
To be able to create a Vue.js application, you need to have the Vue CLI on your computer. To do this, open your terminal and run the following command to install Vue CLI.
npm install -g @vue/cli
Create a project with Vue CLI
To create a Vue.js project, run the following command in your terminal/cmd:
vue create heremap-vue
Select the default option as shown below:
vue-cli-options
It will take few seconds to create a project. Once everything is installed, navigate to the root folder (heremap-vue) and run npm run serve in the terminal. A browser window should open automatically looking something like what you see below:
localhost-8080.png
Integrate HERE JavaScript API in Vue.js Application
In your favorite editor, open the heremap-vue folder that you have created using the Vue CLI and start editing the index.html file in the public folder as shown below:
vue-folders-public-html
Add the following to the <head> section of the index.html file. These are the required libraries for HERE JavaScript Maps.
Let’s create a HereMap component. From the root folder navigate to the src/components and create the following HereMap.vue file:
here-map-component
Now, add the following code to the HereMap.vue file.
<template>
<div id="map">
<!--In the following div the HERE Map will render-->
<div id="mapContainer" style="height:600px;width:100%" ref="hereMap"></div>
</div>
</template>
<script>
export default {
name: "HereMap",
props: {
center: Object
// center object { lat: 40.730610, lng: -73.935242 }
},
data() {
return {
platform: null,
apikey: "{Replace this with HERE API KEY}"
// You can get the API KEY from developer.here.com
};
},
async mounted() {
// Initialize the platform object:
const platform = new window.H.service.Platform({
apikey: this.apikey
});
this.platform = platform;
this.initializeHereMap();
},
methods: {
initializeHereMap() { // rendering map
const mapContainer = this.$refs.hereMap;
const H = window.H;
// Obtain the default map types from the platform object
var maptypes = this.platform.createDefaultLayers();
// Instantiate (and display) a map object:
var map = new H.Map(mapContainer, maptypes.vector.normal.map, {
zoom: 10,
center: this.center
// center object { lat: 40.730610, lng: -73.935242 }
});
addEventListener("resize", () => map.getViewPort().resize());
// add behavior control
new H.mapevents.Behavior(new H.mapevents.MapEvents(map));
// add UI
H.ui.UI.createDefault(map, maptypes);
// End rendering the initial map
}
}
};
</script>
<style scoped>
#map {
width: 60vw;
min-width: 360px;
text-align: center;
margin: 5% auto;
background-color: #ccc;
}
</style>
In the code above, the initialzeHereMap method is responsible for rendering the HERE map.
Render the HereMap Component
Finally, we need to render the HereMap component in the src/App.vue file.
<template>
<div id="app">
<HereMap :center="center" />
</div>
</template>
<script>
import HereMap from './components/HereMap'
export default {
name: 'app',
components: {
HereMap
// Remove the HelloWorld.vue
},
data() {
return {
// we are this as prop to the HereMap component
center:{
lat: 40.730610,
lng: -73.935242
}
}
}
}
</script>
<style>
#app {
font-family: 'Avenir', Helvetica, Arial, sans-serif;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
text-align: center;
color: #2c3e50;
margin-top: 60px;
}
</style>
As shown in the above code, we are importing the HereMap component that we’ve created. We also added the imported HereMap component to the template section to display the HERE Map.
output
You can zoom to get the 3d view
output
Conclusion
You’ve successfully created an interactive map with Vue.js by using the HERE JavaScript API. Now you can integrate the component in your existing Vue.js applications.
You’ve learned how to:
Create a project with the Vue CLI
Create a reusable map component inside your Vue.js application