1. 程式人生 > >OpenLayers學習筆記(七)— 類似比例尺的距離環

OpenLayers學習筆記(七)— 類似比例尺的距離環

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 }) }) ]; } }) );