2016-10-27 39 views
4

我想在X米的中心点(LatLng)周围创建一个正方形(LatLngBounds)。如何以米为单位创建LatLng点周围的LatLngBounds?

+0

如果我可以从我的中心点建立在X米一个点,我可以使用的LatLngBounds的第二构造函数: L.latLngBounds( latlngs) [http://leafletjs.com/reference.ht毫升#latlngbounds-l.latlngbounds] [1] 但我找不到如何做到这一点。 [1]:http://leafletjs.com/reference.html#latlngbounds-l.latlngbounds – XcinnaY

回答

2

下列溶液演示如何得出这样一个正方形:通过在具有半径点画圆

  • 计算边界以米
  • 平局指定 正方形使用圆圈边界

function drawSquare(map, center, properties, sideLengthInMeters){ 
    var circle = L.circle(center, sideLengthInMeters/2).addTo(map); 
    var bounds = circle.getBounds(); 
    map.removeLayer(circle); //hide circle 
    var rect = L.rectangle(bounds, properties).addTo(map); 
    return rect; 
} 

演示

var center = [59.33,18.02]; 
 

 
// Create the map 
 
var map = L.map('map').setView(center, 10); 
 

 
// Set up the OSM layer 
 
L.tileLayer(
 
     'http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', 
 
     { maxZoom: 18 }).addTo(map); 
 

 
    
 
L.marker(center).addTo(map); 
 

 
var sideInMeters = 10000; 
 
drawSquare(map,center,{ color: 'blue', weight: 1 }, sideInMeters); 
 

 

 
function drawSquare(map, center, properties, sideLengthInMeters){ 
 
    var circle = L.circle(center, sideLengthInMeters/2).addTo(map); 
 
    var bounds = circle.getBounds(); 
 
    map.removeLayer(circle); //hide circle 
 
    var rect = L.rectangle(bounds, properties).addTo(map); 
 
    return rect; 
 
}
#map { 
 
    height: 400px; 
 
}
<script type="text/javascript" src="//code.jquery.com/jquery-1.9.1.js"></script> 
 
<link rel="stylesheet" href="https://unpkg.com/[email protected]/dist/leaflet.css" /> 
 
<script src="https://unpkg.com/[email protected]/dist/leaflet.js"></script> 
 
<link rel="stylesheet" type="text/css" href="style.css"> 
 
<script type="text/javascript" src="app.js"></script> 
 
<div id="map"></div>

相关问题