From 61fd7e613540c3e956fe38aa4dbeb3f93d78181c Mon Sep 17 00:00:00 2001 From: John Firebaugh Date: Tue, 19 Dec 2017 08:06:27 -0800 Subject: [PATCH] Allow setting popup before LngLat --- src/ui/marker.js | 2 +- test/unit/ui/marker.test.js | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/src/ui/marker.js b/src/ui/marker.js index 761d310166f..831dc02a31a 100644 --- a/src/ui/marker.js +++ b/src/ui/marker.js @@ -225,7 +225,7 @@ class Marker { popup.options.offset = this._offset; } this._popup = popup; - this._popup.setLngLat(this._lngLat); + if (this._lngLat) this._popup.setLngLat(this._lngLat); } return this; diff --git a/test/unit/ui/marker.test.js b/test/unit/ui/marker.test.js index 34d71ad4207..6018bbb8fe5 100644 --- a/test/unit/ui/marker.test.js +++ b/test/unit/ui/marker.test.js @@ -5,6 +5,7 @@ const window = require('../../../src/util/window'); const Map = require('../../../src/ui/map'); const Marker = require('../../../src/ui/marker'); const Popup = require('../../../src/ui/popup'); +const LngLat = require('../../../src/geo/lng_lat'); function createMap() { const container = window.document.createElement('div'); @@ -63,6 +64,17 @@ test('Marker', (t) => { t.end(); }); + t.test('popups can be set before LngLat', (t) => { + const map = createMap(); + const popup = new Popup(); + new Marker(window.document.createElement('div')) + .setPopup(popup) + .setLngLat([-77.01866, 38.888]) + .addTo(map); + t.deepEqual(popup.getLngLat(), new LngLat(-77.01866, 38.888)); + t.end(); + }); + t.test('marker centered by default', (t) => { const map = createMap(); const element = window.document.createElement('div');