使用Leaflet创建圆(使用正半径)

时间:2014-09-17 22:19:54

标签: javascript leaflet

在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中的错误?

1 个答案:

答案 0 :(得分:1)

遇到this answer后,我认为这是传单中的一个错误。我下载了当前版本的dev master和added into the fiddle

radius = 1,

新版本确实接受正值并制作一个圆圈。然而,它以不同的方式出错。 0.7指定圆的半径应以米为单位。在当前的开发版中,即使值为1也可以覆盖数百米。