在Leaflet中创建一个圆圈似乎很简单according to the documentation,你只需提供坐标,半径和可选的选项对象:
L.circle( <LatLng> latlng, <Number> radius, <Path options> options? )
我尝试在我正在处理的地图上执行此操作,但无论我指定的半径有多大,我都设法生成一个点而不是一个圆。我让这让我疯了一会儿,然后离开代码去处理其他项目。我最近又回到了原点,并且一时兴起,我尝试使用半径的负值:
"use strict";
var theMap = L.map("map", {
minZoom: 0,
maxZoom: 7,
crs: L.CRS.Simple
}).setView([0, 0], 0),
eventsLayer = new L.LayerGroup(),
unproject = function (coord) {
return theMap.unproject(coord, theMap.getMaxZoom());
},
coord = unproject([12057.79, 13661.21]),
southWest = unproject([0, 32768]),
northEast = unproject([32768, 0]),
radius = -8653.18, // Why isn't it working with a positive radius?!?!?
circ = L.circle(coord, radius, {color: '#f00', fillColor: '#00f'});
theMap.setMaxBounds(new L.LatLngBounds(southWest, northEast));
L.tileLayer("https://tiles.guildwars2.com/1/1/{z}/{x}/{y}.jpg", {
minZoom: 2,
maxZoom: 7,
continuousWorld: true
}).addTo(theMap);
eventsLayer.addTo(theMap);
theMap.setView(coord, 7, {animate: true});
circ.addTo(eventsLayer);
由于某种原因,it creates a circle具有负半径。
这似乎是一个错误,因为文档使用了半径的正值。我的代码中是否存在导致此错误行为的错误,或者它可能是Leaflet中的错误?
答案 0 :(得分:1)
遇到this answer后,我认为这是传单中的一个错误。我下载了当前版本的dev master和added into the fiddle。
radius = 1,
新版本确实接受正值并制作一个圆圈。然而,它以不同的方式出错。 0.7指定圆的半径应以米为单位。在当前的开发版中,即使值为1也可以覆盖数百米。