add Path Popup implementation
This commit is contained in:
parent
919b862c15
commit
48a3c34702
@ -156,6 +156,7 @@ var deps = {
|
||||
'layer/vector2/SVG.js',
|
||||
'layer/vector2/Canvas.js',
|
||||
'layer/vector2/Path.js',
|
||||
'layer/vector2/Path.Popup.js',
|
||||
'geometry/LineUtil.js',
|
||||
'layer/vector2/Polyline.js',
|
||||
'geometry/PolyUtil.js',
|
||||
|
@ -26,12 +26,12 @@
|
||||
map.addLayer(L.marker(latlngs[0]));
|
||||
map.addLayer(L.marker(latlngs[len - 1]));
|
||||
|
||||
var path = L.polygon([[latlngs, [[50.5, 30.5], [50.5, 40], [40, 40]]], [[20, 0], [20, 50], [0, 50]]]).addTo(map);
|
||||
var poly = L.polyline([[60, 30], [60, 50], [40, 50]], {color: 'red'}).addTo(map);
|
||||
var path = L.polygon([[latlngs, [[50.5, 30.5], [50.5, 40], [40, 40]]], [[20, 0], [20, 40], [0, 40]]]).addTo(map);
|
||||
var poly = L.polyline([[[60, 30], [60, 50], [40, 50]], [[20, 50], [20, 70], [0, 70]]], {color: 'red'}).addTo(map);
|
||||
|
||||
map.fitBounds(path);
|
||||
|
||||
// path.bindPopup("Hello world");
|
||||
path.bindPopup("Hello world");
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
|
@ -289,16 +289,19 @@ L.popup = function (options, source) {
|
||||
|
||||
L.Map.include({
|
||||
openPopup: function (popup, latlng, options) { // (Popup) or (String || HTMLElement, LatLng[, Object])
|
||||
this.closePopup();
|
||||
|
||||
if (!(popup instanceof L.Popup)) {
|
||||
var content = popup;
|
||||
|
||||
popup = new L.Popup(options)
|
||||
.setLatLng(latlng)
|
||||
.setContent(content);
|
||||
popup = new L.Popup(options).setContent(content);
|
||||
}
|
||||
|
||||
popup.setLatLng(latlng);
|
||||
|
||||
if (this.hasLayer(popup)) {
|
||||
return this;
|
||||
}
|
||||
|
||||
this.closePopup();
|
||||
this._popup = popup;
|
||||
return this.addLayer(popup);
|
||||
},
|
||||
|
64
src/layer/vector2/Path.Popup.js
Normal file
64
src/layer/vector2/Path.Popup.js
Normal file
@ -0,0 +1,64 @@
|
||||
/*
|
||||
* Popup extension to L.Path (polylines, polygons, circles), adding popup-related methods.
|
||||
*/
|
||||
|
||||
L.Path.include({
|
||||
|
||||
bindPopup: function (content, options) {
|
||||
|
||||
if (content instanceof L.Popup) {
|
||||
this._popup = content;
|
||||
} else {
|
||||
if (!this._popup || options) {
|
||||
this._popup = new L.Popup(options, this);
|
||||
}
|
||||
this._popup.setContent(content);
|
||||
}
|
||||
|
||||
if (!this._popupHandlersAdded) {
|
||||
this
|
||||
.on('click', this._openPopup, this)
|
||||
.on('remove', this.closePopup, this);
|
||||
|
||||
this._popupHandlersAdded = true;
|
||||
}
|
||||
|
||||
return this;
|
||||
},
|
||||
|
||||
unbindPopup: function () {
|
||||
if (this._popup) {
|
||||
this._popup = null;
|
||||
this
|
||||
.off('click', this._openPopup)
|
||||
.off('remove', this.closePopup);
|
||||
|
||||
this._popupHandlersAdded = false;
|
||||
}
|
||||
return this;
|
||||
},
|
||||
|
||||
openPopup: function (latlng) {
|
||||
|
||||
if (this._popup) {
|
||||
// open the popup from one of the path's points if not specified
|
||||
latlng = latlng || this._latlng ||
|
||||
this._latlngs[Math.floor(this._latlngs.length / 2)];
|
||||
|
||||
this._openPopup({latlng: latlng});
|
||||
}
|
||||
|
||||
return this;
|
||||
},
|
||||
|
||||
closePopup: function () {
|
||||
if (this._popup) {
|
||||
this._popup._close();
|
||||
}
|
||||
return this;
|
||||
},
|
||||
|
||||
_openPopup: function (e) {
|
||||
this._map.openPopup(this._popup, e.latlng);
|
||||
}
|
||||
});
|
Loading…
Reference in New Issue
Block a user