該項目不再維護。如果你想繼續這個項目,只需分叉它並繼續。如果您給我留言,也許我會在本自述文件中添加一個指向您的分支的顯著連結。
OpenWeatherMap (OWM) 是一項提供天氣相關資料的服務,並使用基於 OpenLayers 的地圖將其視覺化。這是一個獨立的基於 Leaflet 的腳本,可輕鬆存取基於 Leaflet 的地圖的 OWM 功能。
簡而言之:一個獨立的 JavaScript 函式庫,可以輕鬆地將 OWM 的圖層和 OWM 目前的城市資料包含在基於 Leaflet 的地圖中。
使用該庫的許多功能的範例地圖可以在 ahorn.lima-city.de/owm 上看到。其「風玫瑰」疊加層是使用者定義標記的範例,可讓您了解使用者定義的標記函數可以實現哪些目標。該地圖也可以在範例目錄中找到。
此代碼已獲得 CC0 許可。範例目錄中的某些檔案可能有其他授權(例如 leaflet.js - 請參閱 leaflet.license) - 如果需要,請查看這些檔案。
OWM 提供了一些 TileLayers:雲、雲經典、降水、降水經典、雨、雨經典、雪、溫度、風速、壓力和壓力等值線。
以下是初始化這些 TileLayers 的方法(現在必須提供 AppId,請在此處取得自己的 AppId):
除了 Leaflet TileLayers 的標準選項之外,還有其他選項:
開箱即用的圖例影像僅適用於壓力、經典降水、經典雲、經典雨、雪、溫度和風速。如果您需要更多圖像,請添加您自己的圖像。
使用 OpenWeatherMap API 取得城市的天氣資料。它們作為標記的 LayerGroup 添加。此層可以每n分鐘刷新一次(使用選項intervall設定n ,但請不要使用少於10分鐘)。
以下是初始化這些動態建立的圖層的方法:
有許多選項可用於配置城市資料的行為(預設值是粗體)。但不要害怕大量的選項,如果您對預設值感到滿意,則無需設定任何選項:
以下是最重要的幾行:
< head >
< script type =" text/javascript " src =" leaflet.js " > </ script >
< link rel =" stylesheet " type =" text/css " href =" leaflet-openweathermap.css " />
< script type =" text/javascript " src =" leaflet-openweathermap.js " > </ script >
</ head >
var osm = L . tileLayer ( 'https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png' , {
maxZoom : 18 , attribution : '[insert correct attribution here!]' } ) ;
var clouds = L . OWM . clouds ( { showLegend : false , opacity : 0.5 , appId : 'YOUR_OWN_APPID' } ) ;
var city = L . OWM . current ( { intervall : 15 , lang : 'de' } ) ;
var map = L . map ( 'map' , { center : new L . LatLng ( 51.5 , 10 ) , zoom : 10 , layers : [ osm ] } ) ;
var baseMaps = { "OSM Standard" : osm } ;
var overlayMaps = { "Clouds" : clouds , "Cities" : city } ;
var layerControl = L . control . layers ( baseMaps , overlayMaps ) . addTo ( map ) ;
提供一種用於建立標記的函數,另一種用於建立彈出視窗的函數。將選項markerFunction和popupFunction加入L.OWM.current的呼叫中。作為參數所獲得的資料結構目前還沒有很好的記錄。您會收到 OWM 發送的內容。只需查看資料並記住大多數條目都是可選的。函數的上下文 (this) 是您建立的 L.OWM.Current 實例。因此,您可以存取選項(例如 this.options.TemperatureUnit)和其他屬性。
< head >
< script type =" text/javascript " src =" leaflet.js " > </ script >
< link rel =" stylesheet " type =" text/css " href =" leaflet-openweathermap.css " />
< script type =" text/javascript " src =" leaflet-openweathermap.js " > </ script >
</ head >
function myOwmMarker ( data ) {
// just a Leaflet default marker
return L . marker ( [ data . coord . lat , data . coord . lon ] ) ;
}
function myOwmPopup ( data ) {
// just a Leaflet default popup with name as content
return L . popup ( ) . setContent ( data . name ) ;
}
var osm = L . tileLayer ( 'https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png' , {
maxZoom : 18 , attribution : '[insert correct attribution here!]' } ) ;
var clouds = L . OWM . clouds ( { showLegend : false , opacity : 0.5 , appId : 'YOUR_OWN_APPID' } ) ;
var city = L . OWM . current ( { intervall : 15 , lang : 'de' ,
markerFunction : myOwmMarker , popupFunction : myOwmPopup } ) ;
var map = L . map ( 'map' , { center : new L . LatLng ( 51.5 , 10 ) , zoom : 10 , layers : [ osm ] } ) ;
var baseMaps = { "OSM Standard" : osm } ;
var overlayMaps = { "Clouds" : clouds , "Cities" : city } ;
var layerControl = L . control . layers ( baseMaps , overlayMaps ) . addTo ( map ) ;
L.OWM.Utils.i18n[lang]
。