Your search did not match any results.
Vector Map

Zooming and Centering

Documentation

This demo shows the VectorMap zooming and centering capabilities. The map contains several cities represented by dot markers. To identify a city, pause on its marker, and the name of the city will appear in a tooltip. Moreover, if you click the marker, the map will be zoomed and centered on it. In code it is performed by calling the center(centerCoordinates) and zoomFactor(zoomFactor) methods. A click on the «Reset» button restores default center coordinates and zoom factor.

Copy to CodeSandBox
Apply
Reset
<template> <div> <dx-vector-map id="vector-map" ref="vectorMap" :bounds="bounds" @click="markerClick" > <dx-layer :data-source="mapsWorld" :hover-enabled="false" /> <dx-layer :data-source="markers"/> <dx-tooltip :enabled="true" :customize-tooltip="customizeTooltip" /> </dx-vector-map> <dx-button id="reset" text="Reset" @click="reset" /> </div> </template> <script> import * as mapsData from 'devextreme/dist/js/vectormap-data/world.js'; import { DxVectorMap, DxLayer, DxTooltip } from 'devextreme-vue/vector-map'; import { DxButton } from 'devextreme-vue/button'; import { markers } from './data.js'; export default { components: { DxVectorMap, DxLayer, DxTooltip, DxButton }, data() { return { markers, mapsWorld: mapsData.world, bounds: [-180, 85, 180, -60] }; }, methods: { customizeTooltip(info) { if (info.layer.type === 'marker') { return { text: info.attribute('name') }; } }, markerClick(e) { if (e.target && e.target.layer.type === 'marker') { e.component.center(e.target.coordinates()).zoomFactor(10); } }, reset() { const vectorMap = this.$refs['vectorMap'].instance; vectorMap.center(null); vectorMap.zoomFactor(null); } } }; </script> <style> #vector-map { height: 420px; } #reset { margin: 10px 2px; } </style>
import Vue from 'vue'; import App from './App.vue'; new Vue({ el: '#app', components: { App }, template: '<App/>' });
<!DOCTYPE html> <html> <head> <title>DevExtreme Demo</title> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0" /> <link rel="stylesheet" type="text/css" href="https://cdn3.devexpress.com/jslib/19.2.4/css/dx.common.css" /> <link rel="stylesheet" type="text/css" href="https://cdn3.devexpress.com/jslib/19.2.4/css/dx.light.css" /> <script src="https://unpkg.com/core-js@2.4.1/client/shim.min.js"></script> <script src="https://unpkg.com/systemjs@0.21.3/dist/system.js"></script> <script type="text/javascript" src="config.js"></script> <script type="text/javascript"> System.import('./index.js'); </script> </head> <body class="dx-viewport"> <div class="demo-container"> <div id="app"></div> </div> </body> </html>
export const markers = [ { coordinates: [-0.1262, 51.5002], attributes: { name: 'London' } }, { coordinates: [149.1286, -35.2820], attributes: { name: 'Canberra' } }, { coordinates: [139.6823, 35.6785], attributes: { name: 'Tokyo' } }, { coordinates: [-77.0241, 38.8921], attributes: { name: 'Washington' } }, { coordinates: [-75.6794, 45.4214], attributes: { name: 'Ottawa' } }, { coordinates: [37.617778, 55.751667], attributes: { name: 'Moscow' } }, { coordinates: [116.4, 39.933333], attributes: { name: 'Beijing' } }, { coordinates: [12.5, 41.9], attributes: { name: 'Rome' } }, { coordinates: [23.716667, 38], attributes: { name: 'Athens' } }, { coordinates: [2.333333, 48.833333], attributes: { name: 'Paris' } }, { coordinates: [-3.683333, 40.4], attributes: { name: 'Madrid' } }, { coordinates: [-47.866667, -15.798889], attributes: { name: 'Brasilia' } } ];
System.config({ transpiler: 'plugin-babel', paths: { 'npm:': 'https://unpkg.com/' }, map: { vue: 'npm:vue@2.6.3/dist/vue.esm.browser.js', 'vue-loader': 'npm:dx-systemjs-vue-browser@latest/index.js', 'devextreme': 'npm:devextreme@19.2', 'devextreme/dist/js/vectormap-data': 'npm:devextreme@19.2/dist/js/vectormap-data', 'devextreme-vue': 'npm:devextreme-vue@19.2', jszip: 'npm:jszip@3.1.3/dist/jszip.min.js', 'quill': 'npm:quill@1.3.7/dist/quill.js', 'devexpress-diagram': 'npm:devexpress-diagram', 'devexpress-gantt': 'npm:devexpress-gantt', 'plugin-babel': 'npm:systemjs-plugin-babel@0/plugin-babel.js', 'systemjs-babel-build': 'npm:systemjs-plugin-babel@0/systemjs-babel-browser.js' }, meta: { '*.vue': { loader: 'vue-loader' }, 'devextreme/dist/js/vectormap-data/*': { esModule: true } }, packages: { 'devextreme-vue': { main: 'index.js' }, 'devextreme': { defaultExtension: 'js' } }, babelOptions: { sourceMaps: false, stage0: true } });