Your search did not match any results.
VectorMap

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 Plunker
Apply
Reset
<dx-vector-map id="vector-map" [bounds]="[-180, 85, 180, -60]" (onClick)="markerClick($event)"> <dxo-tooltip [enabled]="true" [customizeTooltip]="customizeTooltip"></dxo-tooltip> <dxi-layer [dataSource]="worldMap" [hoverEnabled]="false"></dxi-layer> <dxi-layer [dataSource]="markers"></dxi-layer> </dx-vector-map> <dx-button id="reset" text="Reset" (onClick)="resetClick()"></dx-button>
import { NgModule, Component, ViewChild, enableProdMode } from '@angular/core'; import { BrowserModule } from '@angular/platform-browser'; import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; import { DxVectorMapComponent, DxVectorMapModule, DxButtonModule } from 'devextreme-angular'; import * as mapsData from 'vectormap-data/world.js'; import { Marker, Service } from './app.service'; if(!/localhost/.test(document.location.host)) { enableProdMode(); } @Component({ selector: 'demo-app', providers: [ Service ], templateUrl: 'app/app.component.html', styleUrls: ['app/app.component.css'] }) export class AppComponent { @ViewChild(DxVectorMapComponent) vectorMap: DxVectorMapComponent worldMap: any = mapsData.world; markers: Marker[]; constructor(service: Service) { this.markers = service.getMarkers(); } customizeTooltip(arg) { if(arg.layer.type === "marker") { return { text: arg.attribute("name") }; } } markerClick(e) { if(e.target && e.target.layer.type === "marker") { e.component.center(e.target.coordinates()).zoomFactor(10); } } resetClick() { this.vectorMap.instance.center(null).zoomFactor(null); } } @NgModule({ imports: [ BrowserModule, DxVectorMapModule, DxButtonModule ], declarations: [AppComponent], bootstrap: [AppComponent] }) export class AppModule { } platformBrowserDynamic().bootstrapModule(AppModule);
/deep/ #vector-map { height: 420px; width: 100%; display: block; } /deep/ #reset { margin-top: 10px; }
import { Injectable } from '@angular/core'; export class Attributes { name: string; } export class Marker { coordinates: number[]; attributes: Attributes; } let markers: Marker[] = [ { 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' } } ]; @Injectable() export class Service { getMarkers(): Marker[] { return markers; } }
// In real applications, you should not transpile code in the browser. You can see how to create your own application with Angular 2 and DevExtreme here: // https://github.com/DevExpress/devextreme-angular/blob/master/README.md System.config({ transpiler: 'ts', typescriptOptions: { module: "commonjs", emitDecoratorMetadata: true, experimentalDecorators: true }, meta: { 'typescript': { "exports": "ts" } }, paths: { 'npm:': 'https://unpkg.com/' }, map: { 'ts': 'npm:plugin-typescript@7.0.6/lib/plugin.js', 'typescript': 'npm:typescript@2.2.2/lib/typescript.js', '@angular/core': 'npm:@angular/core@4.1.0/bundles/core.umd.js', '@angular/common': 'npm:@angular/common@4.1.0/bundles/common.umd.js', '@angular/compiler': 'npm:@angular/compiler@4.1.0/bundles/compiler.umd.js', '@angular/platform-browser': 'npm:@angular/platform-browser@4.1.0/bundles/platform-browser.umd.js', '@angular/platform-browser-dynamic': 'npm:@angular/platform-browser-dynamic@4.1.0/bundles/platform-browser-dynamic.umd.js', '@angular/http': 'npm:@angular/http@4.1.0/bundles/http.umd.js', '@angular/router': 'npm:@angular/router@4.1.0/bundles/router.umd.js', '@angular/forms': 'npm:@angular/forms@4.1.0/bundles/forms.umd.js', 'rxjs': 'npm:rxjs@5.3.1', 'devextreme': 'npm:devextreme@17.1', 'vectormap-data': 'npm:devextreme@17.1/dist/js/vectormap-data', 'jquery': 'npm:jquery@3.1.1/dist/jquery.min.js', 'jszip': 'npm:jszip@3.1.3/dist/jszip.min.js', 'devextreme-angular': 'npm:devextreme-angular@17.1' }, packages: { 'app': { main: './app.component.ts', defaultExtension: 'ts' }, 'devextreme': { defaultExtension: 'js' }, 'devextreme-angular': { main: 'index.js', defaultExtension: 'js' } } });
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <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/17.1.5/css/dx.spa.css" /> <link rel="stylesheet" type="text/css" href="https://cdn3.devexpress.com/jslib/17.1.5/css/dx.common.css" /> <link rel="dx-theme" data-theme="generic.light" href="https://cdn3.devexpress.com/jslib/17.1.5/css/dx.light.css" /> <script src="https://unpkg.com/core-js@2.4.1/client/shim.min.js"></script> <script src="https://unpkg.com/zone.js@0.6.25/dist/zone.js"></script> <script src="https://unpkg.com/reflect-metadata@0.1.3/Reflect.js"></script> <script src="https://unpkg.com/systemjs@0.19.31/dist/system.js"></script> <script src="js/jquery-3.1.0.min.js"></script> <script src="config.js"></script> <script> System.import('app').catch(console.error.bind(console)); </script> </head> <body class="dx-viewport"> <div class="demo-container"> <demo-app>Loading...</demo-app> </div> </body> </html>