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

Unified Diff: polymer_1.0.4/bower_components/google-map/google-map-marker.html

Issue 1205703007: Add polymer 1.0 to npm_modules (Closed) Base URL: https://chromium.googlesource.com/infra/third_party/npm_modules.git@master
Patch Set: Renamed folder to 1.0.4 Created 5 years, 6 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
Index: polymer_1.0.4/bower_components/google-map/google-map-marker.html
diff --git a/polymer_1.0.4/bower_components/google-map/google-map-marker.html b/polymer_1.0.4/bower_components/google-map/google-map-marker.html
new file mode 100644
index 0000000000000000000000000000000000000000..50aea9eaee7511e1e6cbb48b626b8b5419d9a2d4
--- /dev/null
+++ b/polymer_1.0.4/bower_components/google-map/google-map-marker.html
@@ -0,0 +1,354 @@
+<!-- Copyright (c) 2015 Google Inc. All rights reserved. -->
+
+<link rel="import" href="../polymer/polymer.html">
+<link rel="import" href="../google-apis/google-maps-api.html">
+
+<!--
+The `google-map-marker` element represents a map marker. It is used as a
+child of `google-map`.
+
+<b>Example</b>:
+
+ <google-map latitude="37.77493" longitude="-122.41942">
+ <google-map-marker latitude="37.779" longitude="-122.3892"
+ title="Go Giants!"></google-map-marker>
+ </google-map>
+
+<b>Example</b> - marker with info window (children create the window content):
+
+ <google-map-marker latitude="37.77493" longitude="-122.41942">
+ <img src="image.png">
+ </google-map-marker>
+
+<b>Example</b> - a draggable marker:
+
+ <google-map-marker latitude="37.77493" longitude="-122.41942"
+ draggable="true"></google-map-marker>
+
+<b>Example</b> - hide a marker:
+
+ <google-map-marker latitude="37.77493" longitude="-122.41942"
+ hidden></google-map-marker>
+
+-->
+
+<dom-module id="google-map-marker">
+ <style>
+ :host {
+ display: none;
+ }
+ </style>
+ <template><content></content></template>
+</dom-module>
+
+<script>
+
+(function() {
+ Polymer({
+
+ is: 'google-map-marker',
+
+ /**
+ * Fired when the marker icon was clicked. Requires the clickEvents attribute to be true.
+ * @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.
+ */
+ properties: {
+ /**
+ * A Google Maps marker object.
+ * @type google.maps.Marker
+ */
+ marker: Object,
+
+ /**
+ * The Google map object.
+ * @type google.maps.Map
+ */
+ map: {
+ type: Object,
+ observer: '_mapChanged'
+ },
+
+ /**
+ * A Google Map Infowindow object.
+ */
+ info: {
+ type: Object,
+ value: null
+ },
+
+ /**
+ * When true, marker *click events are automatically registered.
+ */
+ clickEvents: {
+ type: Boolean,
+ value: false,
+ observer: '_clickEventsChanged'
+ },
+
+ /**
+ * Image URL for the marker icon.
+ * @type string|google.maps.Icon|google.maps.Symbol
+ */
+ icon: {
+ type: Object,
+ value: null,
+ observer: '_iconChanged'
+ },
+
+ /**
+ * When true, marker mouse* events are automatically registered.
+ */
+ mouseEvents: {
+ type: Boolean,
+ value: false,
+ observer: '_mouseEventsChanged'
+ },
+
+ /**
+ * Z-index for the marker icon.
+ */
+ zIndex: {
+ type: Number,
+ value: 0,
+ observer: '_zIndexChanged'
+ },
+
+ /**
+ * The marker's longitude coordinate.
+ */
+ longitude: {
+ type: Number,
+ value: null,
+ reflectToAttribute: true
+ },
+ /**
+ * The marker's latitude coordinate.
+ */
+ latitude: {
+ type: Number,
+ value: null,
+ reflectToAttribute: true
+ }
+ },
+
+ observers: [
+ '_updatePosition(latitude, longitude)'
+ ],
+
+ detached: function() {
+ if (this.marker) {
+ this.marker.setMap(null);
+ }
+ if (this._contentObserver)
+ this._contentObserver.disconnect();
+ },
+
+ attached: function() {
+ // If element is added back to DOM, put it back on the map.
+ if (this.marker) {
+ this.marker.setMap(this.map);
+ }
+ },
+
+ _updatePosition: function() {
+ if (this.marker && this.latitude != null && this.longitude != null) {
+ this.marker.setPosition({
+ lat: parseFloat(this.latitude),
+ lng: parseFloat(this.longitude)
+ });
+ }
+ },
+
+ _clickEventsChanged: function() {
+ if (this.map) {
+ if (this.clickEvents) {
+ this._forwardEvent('click');
+ this._forwardEvent('dblclick');
+ this._forwardEvent('rightclick');
+ } else {
+ this._clearListener('click');
+ this._clearListener('dblclick');
+ this._clearListener('rightclick');
+ }
+ }
+ },
+
+ _mouseEventsChanged: function() {
+ if (this.map) {
+ if (this.mouseEvents) {
+ this._forwardEvent('mousedown');
+ this._forwardEvent('mousemove');
+ this._forwardEvent('mouseout');
+ this._forwardEvent('mouseover');
+ this._forwardEvent('mouseup');
+ } else {
+ this._clearListener('mousedown');
+ this._clearListener('mousemove');
+ this._clearListener('mouseout');
+ this._clearListener('mouseover');
+ this._clearListener('mouseup');
+ }
+ }
+ },
+
+ _iconChanged: function() {
+ if (this.marker) {
+ this.marker.setIcon(this.icon);
+ }
+ },
+
+ _zIndexChanged: function() {
+ if (this.marker) {
+ this.marker.setZIndex(this.zIndex);
+ }
+ },
+
+ _mapChanged: function() {
+ // Marker will be rebuilt, so disconnect existing one from old map and listeners.
+ if (this.marker) {
+ this.marker.setMap(null);
+ google.maps.event.clearInstanceListeners(this.marker);
+ }
+
+ if (this.map && this.map instanceof google.maps.Map) {
+ this._mapReady();
+ }
+ },
+
+ _contentChanged: function() {
+ if (this._contentObserver)
+ this._contentObserver.disconnect();
+ // Watch for future updates.
+ this._contentObserver = new MutationObserver( this._contentChanged.bind(this));
+ this._contentObserver.observe( this, {
+ childList: true,
+ subtree: true
+ });
+
+ var content = this.innerHTML.trim();
+ if (content) {
+ 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);
+ }.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_);
+ this.info = null;
+ }
+ }
+ },
+
+ _mapReady: function() {
+ this._listeners = {};
+ this.marker = new google.maps.Marker({
+ map: this.map,
+ position: new google.maps.LatLng(this.latitude, this.longitude),
+ title: this.title,
+ draggable: this.draggable,
+ visible: !this.hidden,
+ icon: this.icon,
+ zIndex: this.zIndex
+ });
+ this._contentChanged();
+ this._clickEventsChanged();
+ this._contentChanged();
+ this._mouseEventsChanged();
+ setupDragHandler_.bind(this)();
+ },
+
+ _clearListener: function(name) {
+ if (this._listeners[name]) {
+ google.maps.event.removeListener(this._listeners[name]);
+ this._listeners[name] = null;
+ }
+ },
+
+ _forwardEvent: function(name) {
+ this._listeners[name] = google.maps.event.addListener(this.marker, name, function(event) {
+ this.fire('google-map-marker-' + name, event);
+ }.bind(this));
+ },
+
+ attributeChanged: function(attrName, oldVal, newVal) {
+ if (!this.marker) {
+ return;
+ }
+
+ // Cannot use *Changed watchers for native properties.
+ switch (attrName) {
+ case 'hidden':
+ this.marker.setVisible(!this.hidden);
+ break;
+ case 'draggable':
+ this.marker.setDraggable(this.draggable);
+ setupDragHandler_.bind(this)();
+ break;
+ case 'title':
+ this.marker.setTitle(this.title);
+ break;
+ }
+ }
+ });
+
+ 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>

Powered by Google App Engine
This is Rietveld 408576698