Skip to content

Commit

Permalink
A few fixes for some compiler warnings.
Browse files Browse the repository at this point in the history
  • Loading branch information
rictic authored and e111077 committed Feb 22, 2018
1 parent ce2884c commit be0881e
Show file tree
Hide file tree
Showing 5 changed files with 1,000 additions and 975 deletions.
300 changes: 152 additions & 148 deletions google-map-directions.html
Original file line number Diff line number Diff line change
Expand Up @@ -40,174 +40,178 @@
</google-maps-api>
</template>
<script>
Polymer({
is: 'google-map-directions',

/**
* Fired whenever the directions service returns a result.
*
* @event google-map-response
* @param {{response: Object}} detail
*/

/**
* Polymer properties for the google-map-directions custom element.
*/
properties: {
/**
* A Maps API key. To obtain an API key, see developers.google.com/maps/documentation/javascript/tutorial#api_key.
*/
apiKey: String,
(function() {
'use strict';

/**
* Overrides the origin the Maps API is loaded from. Defaults to `https://maps.googleapis.com`.
*/
mapsUrl: {
type: String
// Initial value set in google-maps-api.
},
Polymer({
is: 'google-map-directions',

/**
* The Google map object.
* Fired whenever the directions service returns a result.
*
* @type google.maps.Map
* @event google-map-response
* @param {{response: Object}} detail
*/
map: {
type: Object,
observer: '_mapChanged'
},

/**
* Start address or latlng to get directions from.
*
* @type string|google.maps.LatLng
* Polymer properties for the google-map-directions custom element.
*/
startAddress: {
type: String,
value: null
properties: {
/**
* A Maps API key. To obtain an API key, see developers.google.com/maps/documentation/javascript/tutorial#api_key.
*/
apiKey: String,

/**
* Overrides the origin the Maps API is loaded from. Defaults to `https://maps.googleapis.com`.
*/
mapsUrl: {
type: String
// Initial value set in google-maps-api.
},

/**
* The Google map object.
*
* @type google.maps.Map
*/
map: {
type: Object,
observer: '_mapChanged'
},

/**
* Start address or latlng to get directions from.
*
* @type string|google.maps.LatLng
*/
startAddress: {
type: String,
value: null
},

/**
* End address or latlng for directions to end.
*
* @type string|google.maps.LatLng
*/
endAddress: {
type: String,
value: null
},

/**
* Travel mode to use. One of 'DRIVING', 'WALKING', 'BICYCLING', 'TRANSIT'.
*/
travelMode: {
type: String,
value: 'DRIVING'
},

/**
* Array of intermediate waypoints. Directions will be calculated
* from the origin to the destination by way of each waypoint in this array.
* The maximum allowed waypoints is 8, plus the origin, and destination.
* Maps API for Business customers are allowed 23 waypoints,
* plus the origin, and destination.
* Waypoints are not supported for transit directions. Optional.
*
* @type Array<google.maps.DirectionsWaypoint>
*/
waypoints: {
type: Array,
value: function() { return []; }
},

/**
* The localized language to load the Maps API with. For more information
* see https://developers.google.com/maps/documentation/javascript/basics#Language
*
* Note: the Maps API defaults to the preffered language setting of the browser.
* Use this parameter to override that behavior.
*/
language: {
type: String,
value: null
},

/**
* Options for the display of results
*/
rendererOptions: {
type: Object,
value: function() { return {}; }
},

/**
* The response from the directions service.
*
*/
response: {
type: Object,
observer: '_responseChanged',
notify: true
}
},

/**
* End address or latlng for directions to end.
*
* @type string|google.maps.LatLng
*/
endAddress: {
type: String,
value: null
},
observers: [
'_route(startAddress, endAddress, travelMode, waypoints.*)'
],

/**
* Travel mode to use. One of 'DRIVING', 'WALKING', 'BICYCLING', 'TRANSIT'.
*/
travelMode: {
type: String,
value: 'DRIVING'
_mapApiLoaded: function() {
this._route();
},

/**
* Array of intermediate waypoints. Directions will be calculated
* from the origin to the destination by way of each waypoint in this array.
* The maximum allowed waypoints is 8, plus the origin, and destination.
* Maps API for Business customers are allowed 23 waypoints,
* plus the origin, and destination.
* Waypoints are not supported for transit directions. Optional.
*
* @type Array<google.maps.DirectionsWaypoint>
*/
waypoints: {
type: Array,
value: function() { return []; }
},

/**
* The localized language to load the Maps API with. For more information
* see https://developers.google.com/maps/documentation/javascript/basics#Language
*
* Note: the Maps API defaults to the preffered language setting of the browser.
* Use this parameter to override that behavior.
*/
language: {
type: String,
value: null
_responseChanged: function() {
if (this.directionsRenderer && this.response) {
this.directionsRenderer.setDirections(this.response);
}
},

/**
* Options for the display of results
*/
rendererOptions: {
type: Object,
value: function() { return {}; }
_mapChanged: function() {
if (this.map && this.map instanceof google.maps.Map) {
if (!this.directionsRenderer) {
this.directionsRenderer = new google.maps.DirectionsRenderer(this.rendererOptions);
}
this.directionsRenderer.setMap(this.map);
this._responseChanged();
} else {
// If there is no more map, remove the directionsRenderer from the map and delete it.
if (this.directionsRenderer) {
this.directionsRenderer.setMap(null);
this.directionsRenderer = null;
}
}
},

/**
* The response from the directions service.
*
*/
response: {
type: Object,
observer: '_responseChanged',
notify: true
}
},

observers: [
'_route(startAddress, endAddress, travelMode, waypoints.*)'
],

_mapApiLoaded: function() {
this._route();
},

_responseChanged: function() {
if (this.directionsRenderer && this.response) {
this.directionsRenderer.setDirections(this.response);
}
},

_mapChanged: function() {
if (this.map && this.map instanceof google.maps.Map) {
if (!this.directionsRenderer) {
this.directionsRenderer = new google.maps.DirectionsRenderer(this.rendererOptions);
_route: function() {
// Abort attempts to _route if the API is not available yet or the
// required attributes are blank.
if (typeof google == 'undefined' || typeof google.maps == 'undefined' ||
!this.startAddress || !this.endAddress) {
return;
}
this.directionsRenderer.setMap(this.map);
this._responseChanged();
} else {
// If there is no more map, remove the directionsRenderer from the map and delete it.
if (this.directionsRenderer) {
this.directionsRenderer.setMap(null);
this.directionsRenderer = null;

// Construct a directionsService if necessary.
// Wait until here where the maps api has loaded and directions are actually needed.
if (!this.directionsService) {
this.directionsService = new google.maps.DirectionsService();
}
}
},

_route: function() {
// Abort attempts to _route if the API is not available yet or the
// required attributes are blank.
if (typeof google == 'undefined' || typeof google.maps == 'undefined' ||
!this.startAddress || !this.endAddress) {
return;
}

// Construct a directionsService if necessary.
// Wait until here where the maps api has loaded and directions are actually needed.
if (!this.directionsService) {
this.directionsService = new google.maps.DirectionsService();
var request = {
origin: this.startAddress,
destination: this.endAddress,
travelMode: this.travelMode,
waypoints: this.waypoints
};
this.directionsService.route(request, function(response, status) {
if (status == google.maps.DirectionsStatus.OK) {
this.response = response;
this.fire('google-map-response', {response: response});
}
}.bind(this));
}

var request = {
origin: this.startAddress,
destination: this.endAddress,
travelMode: this.travelMode,
waypoints: this.waypoints
};
this.directionsService.route(request, function(response, status) {
if (status == google.maps.DirectionsStatus.OK) {
this.response = response;
this.fire('google-map-response', {response: response});
}
}.bind(this));
}
});
});
})();
</script>
</dom-module>
9 changes: 9 additions & 0 deletions google-map-marker.html
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,11 @@
<script>
(function() {


/**
* @this {GoogleMapMarkerElement} This function is called with .bind(this) in the map
* marker element below.
*/
function setupDragHandler_() {
if (this.draggable) {
this.dragHandler_ = google.maps.event.addListener(
Expand All @@ -55,6 +60,10 @@
}
}

/**
* @this {GoogleMapMarkerElement} This function is called with .bind(this) in setupDragHandler
*_above.
*/
function onDragEnd_(e, details, sender) {
this.latitude = e.latLng.lat();
this.longitude = e.latLng.lng();
Expand Down
Loading

0 comments on commit be0881e

Please sign in to comment.