首先需要一個方法,是把傳遞過來的經緯度按照半徑N公裡擴散,找出距離中心經緯度N公裡的上下左右經緯度值。效果如圖
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIyZuBnLwFWbtU2YuFGdzlGZtgGdyFWZtwWczlXbtAHaw1SNxYDMyEDMy8CX2AzLcJTMwIzLcNHZh9GbwV3LcRnblRnbvNWLwd3Lc9mZulmL5xGclVGZnlGZvw1LcpDc0RHaiojIsJye.png)
參考了網上的文章,http://digdeeply.info/archives/06152067.html 這篇文章是用PHP實作的經緯度查詢。修改成JavaScript的 代碼如下:
$(document).ready(function(){
var myLatlng = new google.maps.LatLng(38.85164143999526, 121.52265886688232);
var myOptions = {
zoom: 16,
center: myLatlng,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
var rectangle = new google.maps.Rectangle();
var size = 500;
var rectOptions = {
strokeColor: "#FF0000",
strokeOpacity: 0.8,
strokeWeight: 2,
fillColor: "#FF0000",
fillOpacity: 0.35,
map: map,
bounds: getAround(myLatlng,size)
};
rectangle.setOptions(rectOptions);
});
function getAround(myLatlng,raidus){
var latitude = myLatlng.lat();
var longitude = myLatlng.lng();
var degree = (24901 * 1609) / 360.0;
var raidusMile = raidus;
var dpmLat = 1 / degree;
var radiusLat = dpmLat * raidusMile;
var minLat = latitude - radiusLat;
var maxLat = latitude + radiusLat;
var mpdLng = degree * Math.cos(latitude * (Math.PI / 180));
var dpmLng = 1 / mpdLng;
var radiusLng = dpmLng * raidusMile;
var minLng = longitude - radiusLng;
var maxLng = longitude + radiusLng;
var rectSW = new google.maps.LatLng(minLat,minLng);
var rectNE = new google.maps.LatLng(maxLat,maxLng);
return new google.maps.LatLngBounds(rectSW,rectNE);
}