From 8b2bffd964bab5bc64f43d0fa8a57d6050dcaf69 Mon Sep 17 00:00:00 2001 From: fuzhenn Date: Fri, 5 Apr 2019 18:35:04 +0800 Subject: [PATCH] fix custom infowindow position, close #873 --- src/layer/tile/WMSTileLayer.js | 1 - src/ui/InfoWindow.js | 2 ++ test/geometry/ui/Geometry.InfowindowSpec.js | 18 ++++++++++++++++++ 3 files changed, 20 insertions(+), 1 deletion(-) diff --git a/src/layer/tile/WMSTileLayer.js b/src/layer/tile/WMSTileLayer.js index b93511b16..9a31140da 100644 --- a/src/layer/tile/WMSTileLayer.js +++ b/src/layer/tile/WMSTileLayer.js @@ -1,5 +1,4 @@ import { extend } from '../../core/util'; -import Browser from '../../core/Browser'; import TileLayer from './TileLayer'; /** diff --git a/src/ui/InfoWindow.js b/src/ui/InfoWindow.js index 26d71ff8c..d3ca66f59 100644 --- a/src/ui/InfoWindow.js +++ b/src/ui/InfoWindow.js @@ -182,6 +182,8 @@ class InfoWindow extends UIComponent { const o = new Point(-size['width'] / 2, 0); if (!this.options['custom']) { o._sub(4, 12); + } else { + o._sub(0, size['height']); } const owner = this.getOwner(); if (owner instanceof Marker || owner instanceof MultiPoint) { diff --git a/test/geometry/ui/Geometry.InfowindowSpec.js b/test/geometry/ui/Geometry.InfowindowSpec.js index 365b343a1..8726383d3 100644 --- a/test/geometry/ui/Geometry.InfowindowSpec.js +++ b/test/geometry/ui/Geometry.InfowindowSpec.js @@ -68,6 +68,24 @@ describe('Geometry.InfoWindow', function () { expect(position.round().toArray()).to.be.eql([633, 25]); }); + it('custom infowindow position', function () { + // test infowindow's position with frame offset + var marker = new maptalks.Marker(center.add(0.01, 0.01)); + marker.addTo(layer); + var options = { + title: 'title', + content: '
this is a customized infowindow.
', + animation : false, + custom: true + }; + marker.setInfoWindow(options); + map.setCenter(marker.getCenter()); + marker.openInfoWindow(); + var w = marker.getInfoWindow(); + var position = w.getPosition(); + expect(position.round().toArray()).to.be.eql([433, -109]); + }); + it('autoOpen on click', function (done) { var marker = new maptalks.Marker(center); marker.addTo(layer);