OpenLayers學習筆記(七)— 類似比例尺的距離環
阿新 • • 發佈:2019-01-07
openlayers 3 地圖上建立一個距離環,始終以地圖中心為中心,每個環之間的距離類似比例尺,隨地圖縮放而變化。
新增具有覆蓋整個範圍的特徵的虛擬層,其可以被設定為圍繞地圖中心的環。注意,根據地圖投影,當真實地圖比例發生變化時,環尺寸(甚至形狀)可能會根據位置而變化,例如,如果從格陵蘭島移動到非洲,這些距離將為50公里,200公里,500公里和1000公里。
GitHub:八至
作者:狐狸家的魚
本文連結:類似比例尺功能的距離環
程式碼:
style:
html, body { height: 100%; width: 100%; padding: 0px; margin: 0px; } .map { height: 100%; width: 100%; }
html:
var map = new ol.Map({ layers: [ new ol.layer.Tile({ source: new ol.source.OSM(), }) ], target: 'map', view: new ol.View() }); //距離環 var proj = map.getView().getProjection(); map.addLayer( new ol.layer.Vector({ source:new ol.source.Vector({ features: [ new ol.Feature(new ol.geom.Polygon.fromExtent(proj.getExtent())) ] }), style: function(feature) { var center = ol.proj.transform(map.getView().getCenter(), proj, 'EPSG:4326');var sphere = new ol.Sphere(6371008.8); return [ new ol.style.Style({//1000km geometry: ol.geom.Polygon.circular(sphere, center, 1000000, 128).transform('EPSG:4326', proj), stroke: new ol.style.Stroke({ color: 'yellow', width: 3 }) }), new ol.style.Style({//500km geometry: ol.geom.Polygon.circular(sphere, center, 500000, 128).transform('EPSG:4326', proj), stroke: new ol.style.Stroke({ color: 'yellow', width: 3 }) }), new ol.style.Style({//200km geometry: ol.geom.Polygon.circular(sphere, center, 200000, 128).transform('EPSG:4326', proj), stroke: new ol.style.Stroke({ color: 'yellow', width: 3 }) }), new ol.style.Style({//50km geometry: ol.geom.Polygon.circular(sphere, center, 50000, 128).transform('EPSG:4326', proj), stroke: new ol.style.Stroke({ color: 'yellow', width: 3 }) }) ]; } }) );