angular2-baidu-map
Advanced tools
Comparing version 2.1.0 to 2.2.0
@@ -8,2 +8,3 @@ import { SimpleChange, EventEmitter, OnInit, OnChanges, ElementRef } from '@angular/core'; | ||
onMapLoaded: EventEmitter<{}>; | ||
onMarkerClicked: EventEmitter<{}>; | ||
map: any; | ||
@@ -39,3 +40,3 @@ offlineWords: string; | ||
marker: any; | ||
listener: Function; | ||
listeners: Function[]; | ||
} | ||
@@ -42,0 +43,0 @@ export interface MarkerOptions { |
@@ -16,2 +16,3 @@ "use strict"; | ||
this.onMapLoaded = new core_1.EventEmitter(); | ||
this.onMarkerClicked = new core_1.EventEmitter(); | ||
this.previousMarkers = []; | ||
@@ -32,3 +33,3 @@ } | ||
reZoom(this.map, opts); | ||
redrawMarkers(this.map, this.previousMarkers, opts); | ||
redrawMarkers.bind(this)(this.map, this.previousMarkers, opts); | ||
}; | ||
@@ -39,3 +40,3 @@ BaiduMap.prototype._draw = function () { | ||
this.onMapLoaded.emit(this.map); | ||
redrawMarkers(this.map, this.previousMarkers, options); | ||
redrawMarkers.bind(this)(this.map, this.previousMarkers, options); | ||
}; | ||
@@ -58,2 +59,6 @@ __decorate([ | ||
], BaiduMap.prototype, "onMapLoaded", void 0); | ||
__decorate([ | ||
core_1.Output(), | ||
__metadata('design:type', Object) | ||
], BaiduMap.prototype, "onMarkerClicked", void 0); | ||
BaiduMap = __decorate([ | ||
@@ -150,5 +155,6 @@ core_1.Component({ | ||
var BMap = window['BMap']; | ||
var self = this; | ||
previousMarkers.forEach(function (_a) { | ||
var marker = _a.marker, listener = _a.listener; | ||
marker.removeEventListener('click', listener); | ||
var marker = _a.marker, listeners = _a.listeners; | ||
listeners.forEach(function (listener) { marker.removeEventListener('click', listener); }); | ||
map.removeOverlay(marker); | ||
@@ -163,4 +169,9 @@ }); | ||
map.addOverlay(marker2); | ||
var previousMarker = { marker: marker2, listener: null }; | ||
var previousMarker = { marker: marker2, listeners: [] }; | ||
previousMarkers.push(previousMarker); | ||
var onMarkerClickedListener = function () { | ||
self.onMarkerClicked.emit(marker2); | ||
}; | ||
marker2.addEventListener('click', onMarkerClickedListener); | ||
previousMarker.listeners.push(onMarkerClickedListener); | ||
if (!marker.title && !marker.content) { | ||
@@ -173,6 +184,7 @@ return; | ||
}); | ||
previousMarker.listener = function () { | ||
var openInfoWindowListener = function () { | ||
this.openInfoWindow(infoWindow2); | ||
}; | ||
marker2.addEventListener('click', previousMarker.listener); | ||
previousMarker.listeners.push(openInfoWindowListener); | ||
marker2.addEventListener('click', openInfoWindowListener); | ||
}); | ||
@@ -179,0 +191,0 @@ }; |
{ | ||
"name": "angular2-baidu-map", | ||
"version": "2.1.0", | ||
"version": "2.2.0", | ||
"description": "Angular2 component for Baidu map", | ||
@@ -39,6 +39,2 @@ "main": "./dist/angular2-baidu-map.js", | ||
"devDependencies": { | ||
"@angular/common": "2.0.0-rc.1", | ||
"@angular/core": "2.0.0-rc.1", | ||
"rxjs": "5.0.0-beta.6", | ||
"zone.js": "^0.6.12", | ||
"tsd": "^0.6.5", | ||
@@ -45,0 +41,0 @@ "typescript": "^1.8.10" |
@@ -27,3 +27,3 @@ angular2-baidu-map | ||
<h1>Test Baidu-Map<h1> | ||
<baidu-map ak="put your ak here" [options]="opts" [offline]="offlineOpts" (onMapLoaded)="loadMap($event)"></baidu-map> | ||
<baidu-map ak="put your ak here" [options]="opts" [offline]="offlineOpts" (onMapLoaded)="loadMap($event)" (onMarkerClicked)="clickMarker($event)"></baidu-map> | ||
`, | ||
@@ -65,6 +65,10 @@ styles: [` | ||
loadMap(e) { | ||
loadMap(e: any) { | ||
console.log(e);//e here is the instance of BMap.Map | ||
} | ||
clickMarker(marker: any){ | ||
console.log('The clicked marker is', marker); | ||
} | ||
} | ||
@@ -71,0 +75,0 @@ ``` |
@@ -33,2 +33,3 @@ import {Component, SimpleChange, Input, Output, EventEmitter, OnInit, OnChanges, ChangeDetectionStrategy, ElementRef} from '@angular/core'; | ||
@Output() onMapLoaded = new EventEmitter(); | ||
@Output() onMarkerClicked = new EventEmitter(); | ||
@@ -55,3 +56,3 @@ map: any; | ||
reZoom(this.map, opts); | ||
redrawMarkers(this.map, this.previousMarkers, opts); | ||
redrawMarkers.bind(this)(this.map, this.previousMarkers, opts); | ||
} | ||
@@ -63,3 +64,3 @@ | ||
this.onMapLoaded.emit(this.map); | ||
redrawMarkers(this.map, this.previousMarkers, options); | ||
redrawMarkers.bind(this)(this.map, this.previousMarkers, options); | ||
} | ||
@@ -111,3 +112,3 @@ } | ||
marker: any; | ||
listener: Function; | ||
listeners: Function[]; | ||
} | ||
@@ -206,5 +207,6 @@ | ||
var BMap: any = (<any>window)['BMap']; | ||
var self = this; | ||
previousMarkers.forEach(function({marker, listener}) { | ||
marker.removeEventListener('click', listener); | ||
previousMarkers.forEach(function({marker, listeners}) { | ||
listeners.forEach(listener => { marker.removeEventListener('click', listener); }); | ||
map.removeOverlay(marker); | ||
@@ -225,5 +227,12 @@ }); | ||
map.addOverlay(marker2); | ||
let previousMarker: PreviousMarker = { marker: marker2, listener: null }; | ||
let previousMarker: PreviousMarker = { marker: marker2, listeners: [] }; | ||
previousMarkers.push(previousMarker); | ||
let onMarkerClickedListener = () => { | ||
self.onMarkerClicked.emit(marker2); | ||
}; | ||
marker2.addEventListener('click', onMarkerClickedListener); | ||
previousMarker.listeners.push(onMarkerClickedListener); | ||
if (!marker.title && !marker.content) { | ||
@@ -236,6 +245,7 @@ return; | ||
}); | ||
previousMarker.listener = function() { | ||
let openInfoWindowListener = function() { | ||
this.openInfoWindow(infoWindow2); | ||
}; | ||
marker2.addEventListener('click', previousMarker.listener); | ||
previousMarker.listeners.push(openInfoWindowListener); | ||
marker2.addEventListener('click', openInfoWindowListener); | ||
}); | ||
@@ -242,0 +252,0 @@ }; |
20749
2
464
88