首先需要一个方法,是把传递过来的经纬度按照半径N公里扩散,找出距离中心经纬度N公里的上下左右经纬度值。效果如图
参考了网上的文章,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);
}