<dom-module id="weather-data">
<template>
<style is="custom-style" include="iron-flex iron-flex-alignment">
:host {
display: block;
font-family: Roboto;
}
paper-progress {
top: 0;
left: 0;
position: fixed;
width: 100%;
--paper-progress-active-color: var(--paper-light-blue-500);
--paper-progress-secondary-color: var(--paper-light-blue-100);
}
paper-icon-button {
margin: 0 auto;
margin-top: 20px;
display: block;
}
#weatherIcon {
width: 200px;
height: 200px;
}
table {
border-collapse: collapse;
}
table td {
text-align: center;
border: 1px solid #006064;
padding: 5px;
}
</style>
<paper-progress
id="request-progress"
indeterminate
hidden$="[[!activeRequest]]">
</paper-progress>
<iron-ajax
id="getData"
auto
url="[[weatherApiUrl]]"
handle-as="json"
last-response="{{weatherResponse}}"
last-error="{{error}}"
params="[[_getGegevensVanLocatie(coordinaten.latitude, coordinaten.longitude)]]"
loading="{{activeRequest}}">
</iron-ajax>
<template is="dom-if" id="tmp" if="[[weatherResponse]]">
<paper-icon-button
id="location-button"
disabled$="{{disableLocationButton}}"
on-tap="_getLocation"
icon="maps:my-location"
alt="Zoek mijn huidige locatie">
</paper-icon-button>
<div>
<div class="horizontal center-justified layout">
<h2>Weer voor locatie: <span>[[_maakLocationString(weatherResponse.query.results.channel.location)]]</span></h2>
</div>
<div class="horizontal center-justified layout">
<iron-icon
id="weatherIcon"
icon="[[_getIcon(weatherResponse.query.results.channel.item.condition.code)]]">
</iron-icon>
</div>
<div class="horizontal center-justified layout">
<h2>
<span>
[[weatherResponse.query.results.channel.item.condition.text]],
[[weatherResponse.query.results.channel.item.condition.temp]]° [[weatherResponse.query.results.channel.units.temperature]]
</span>
</h2>
</div>
<div class="horizontal center-justified layout">
<table>
<tr>
<td>
<iron-icon icon="icons:arrow-upward"></iron-icon>
</td>
<td>
<iron-icon icon="icons:arrow-downward"></iron-icon>
</td>
</tr>
<tr>
<td>[[weatherResponse.query.results.channel.astronomy.sunrise]]</td>
<td>[[weatherResponse.query.results.channel.astronomy.sunset]]</td>
</tr>
</table>
</div>
<div class="horizontal center-justified layout">
<h5 id="update-time">
Gegevens geraadpleegd om: [[weatherResponse.query.results.channel.item.condition.date]]<span></span>
</h5>
</div>
</div>
</template>
</template>
<script>
Polymer({
is: 'weather-data',
properties: {
weatherApiUrl: {
type: String,
value: "https://query.yahooapis.com/v1/public/yql"
},
coordinaten: {
type: Array,
value: {
longitude: 22,
latitude: 22
}
}
},
ready: function() {
if (navigator.permissions && navigator.permissions.query) {
navigator.permissions.query({
name: 'geolocation'
}).then(function(status) {
if (status.state === 'granted') {
console.log("Permisson already granted");
_getLocation();
} else {
console.log("Location not YET granted, using default coordinates");
if (status.state === "denied") {
console.log("Denied");
}
}
});
} else {
console.log("Permission not available");
console.log("Using standard coordinates");
}
},
_getLocation: function() {
console.log("Getting location");
},
_getGegevensVanLocatie: function(latitude, longitude) {
var latLong = '(' + 51.0339 + ',' + 3.7094 + ')';
return {
format: 'json',
q: 'select * from weather.forecast where woeid in ' +
'(select woeid from geo.places(1) where text="' + latLong + '") and u="c"'
};
},
_maakLocationString: function(location) {
if (location.city && location.region) {
return location.city + ', ' + location.region;
} else {
return location.city || 'Onbekend';
}
},
_getIcon: function(code) {
if (code >= 37 || code <= 12) {
return "image:flash-on";
}
if (code <= 18) {
return "image:flare";
}
if (code <= 30) {
return "image:wb-cloudy";
}
return "image:wb-sunny";
}
})
</script>
所以這是我的代碼。我想要做的是在狀態更改爲授予時在導航器上授予權限時獲取<paper-icon-button>
元素。但是,這不適用於this.$.location-button
或this.$$('#location-button)
。
這是因爲我在ready()
函數中使用它嗎?