Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(332)

Unified Diff: lib/src/google-map/google-map-marker.html

Issue 1418513006: update elements and fix some bugs (Closed) Base URL: git@github.com:dart-lang/polymer_elements.git@master
Patch Set: code review updates Created 5 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « lib/src/google-map/google-map-directions.html ('k') | lib/src/google-map/google-map-point.html » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: lib/src/google-map/google-map-marker.html
diff --git a/lib/src/google-map/google-map-marker.html b/lib/src/google-map/google-map-marker.html
index 33abe9a9fcfc3376bc3d7838647ba33f78156000..c434414ae5eb8dc1eb484b79ed764ed923936fee 100644
--- a/lib/src/google-map/google-map-marker.html
+++ b/lib/src/google-map/google-map-marker.html
@@ -42,8 +42,23 @@ child of `google-map`.
</dom-module>
<script>
-
(function() {
+
+ function setupDragHandler_() {
+ if (this.draggable) {
+ this.dragHandler_ = google.maps.event.addListener(
+ this.marker, 'dragend', onDragEnd_.bind(this));
+ } else {
+ google.maps.event.removeListener(this.dragHandler_);
+ this.dragHandler_ = null;
+ }
+ }
+
+ function onDragEnd_(e, details, sender) {
+ this.latitude = e.latLng.lat();
+ this.longitude = e.latLng.lng();
+ }
+
Polymer({
is: 'google-map-marker',
@@ -53,45 +68,63 @@ child of `google-map`.
* @param {google.maps.MouseEvent} event The mouse event.
* @event google-map-marker-click
*/
+
/**
* Fired when the marker icon was double clicked. Requires the clickEvents attribute to be true.
* @param {google.maps.MouseEvent} event The mouse event.
* @event google-map-marker-dblclick
*/
+
/**
* Fired for a mousedown on the marker. Requires the mouseEvents attribute to be true.
* @event google-map-marker-mousedown
* @param {google.maps.MouseEvent} event The mouse event.
*/
+
/**
* Fired when the DOM `mousemove` event is fired on the marker. Requires the mouseEvents
* attribute to be true.
* @event google-map-marker-mousemove
* @param {google.maps.MouseEvent} event The mouse event.
*/
+
/**
* Fired when the mouse leaves the area of the marker icon. Requires the mouseEvents attribute to be
* true.
* @event google-map-marker-mouseout
* @param {google.maps.MouseEvent} event The mouse event.
*/
+
/**
* Fired when the mouse enters the area of the marker icon. Requires the mouseEvents attribute to be
* true.
* @event google-map-marker-mouseover
* @param {google.maps.MouseEvent} event The mouse event.
*/
+
/**
* Fired for a mouseup on the marker. Requires the mouseEvents attribute to be true.
*
* @event google-map-marker-mouseup
* @param {google.maps.MouseEvent} event The mouse event.
*/
+
/**
* Fired for a rightclick on the marker. Requires the clickEvents attribute to be true.
* @event google-map-marker-rightclick
* @param {google.maps.MouseEvent} event The mouse event.
*/
+
+ /**
+ * Fired when an infowindow is opened.
+ * @event google-map-marker-open
+ */
+
+ /**
+ * Fired when the close button of the infowindow is pressed.
+ * @event google-map-marker-close
+ */
+
properties: {
/**
* A Google Maps marker object.
@@ -161,6 +194,7 @@ child of `google-map`.
value: null,
reflectToAttribute: true
},
+
/**
* The marker's latitude coordinate.
*/
@@ -168,6 +202,25 @@ child of `google-map`.
type: Number,
value: null,
reflectToAttribute: true
+ },
+
+ /**
+ * A animation for the marker. "DROP" or "BOUNCE". See
+ * https://developers.google.com/maps/documentation/javascript/examples/marker-animations.
+ */
+ animation: {
+ type: String,
+ value: null,
+ observer: '_animationChanged'
+ },
+
+ /**
+ * Specifies whether the InfoWindow is open or not
+ */
+ open: {
+ type: Boolean,
+ value: false,
+ observer: '_openChanged'
}
},
@@ -231,6 +284,12 @@ child of `google-map`.
}
},
+ _animationChanged: function() {
+ if (this.marker) {
+ this.marker.setAnimation(google.maps.Animation[this.animation]);
+ }
+ },
+
_iconChanged: function() {
if (this.marker) {
this.marker.setIcon(this.icon);
@@ -270,20 +329,37 @@ child of `google-map`.
if (!this.info) {
// Create a new infowindow
this.info = new google.maps.InfoWindow();
- this.infoHandler_ = google.maps.event.addListener(this.marker, 'click', function() {
- this.info.open(this.map, this.marker);
+ this.openInfoHandler_ = google.maps.event.addListener(this.marker, 'click', function() {
+ this.open = true;
+ }.bind(this));
+
+ this.closeInfoHandler_ = google.maps.event.addListener(this.info, 'closeclick', function() {
+ this.open = false;
}.bind(this));
}
this.info.setContent(content);
} else {
if (this.info) {
// Destroy the existing infowindow. It doesn't make sense to have an empty one.
- google.maps.event.removeListener(this.infoHandler_);
+ google.maps.event.removeListener(this.openInfoHandler_);
+ google.maps.event.removeListener(this.closeInfoHandler_);
this.info = null;
}
}
},
+ _openChanged: function() {
+ if (this.info) {
+ if (this.open) {
+ this.info.open(this.map, this.marker);
+ this.fire('google-map-marker-open');
+ } else {
+ this.info.close();
+ this.fire('google-map-marker-close');
+ }
+ }
+ },
+
_mapReady: function() {
this._listeners = {};
this.marker = new google.maps.Marker({
@@ -293,6 +369,7 @@ child of `google-map`.
lng: parseFloat(this.longitude)
},
title: this.title,
+ animation: google.maps.Animation[this.animation],
draggable: this.draggable,
visible: !this.hidden,
icon: this.icon,
@@ -302,6 +379,7 @@ child of `google-map`.
this._clickEventsChanged();
this._contentChanged();
this._mouseEventsChanged();
+ this._openChanged();
setupDragHandler_.bind(this)();
},
@@ -339,19 +417,5 @@ child of `google-map`.
}
});
- function setupDragHandler_() {
- if (this.draggable) {
- this.dragHandler_ = google.maps.event.addListener(
- this.marker, 'dragend', onDragEnd_.bind(this));
- } else {
- google.maps.event.removeListener(this.dragHandler_);
- this.dragHandler_ = null;
- }
- }
-
- function onDragEnd_(e, details, sender) {
- this.latitude = e.latLng.lat();
- this.longitude = e.latLng.lng();
- }
})();
</script>
« no previous file with comments | « lib/src/google-map/google-map-directions.html ('k') | lib/src/google-map/google-map-point.html » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698