有左右顶点及中心点的信息应足够把矩形画出来了。
首先要将地理坐标(即经纬度)转换为屏幕坐标,根据三个点的屏幕坐标应可以算出左下角和右下角的屏幕坐标。
假设左上角坐标(x1,y1),右上角(x2,y1),中心点(x,y),左下角(x3,y3),右下角(x4,y4)。
则算出:x3=x1,y3=y1-2*(y1-y)=2y-y1,x4=x2, y4=y3
有了矩形四个点的坐标,利用google的api即可在地图上标出矩形。
由于google的地图数据源连不上,所以用Openlayers的测试用的数据源写了个例子:
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Example</title>
<script src="../lib/OpenLayers.js"></script>
<script type="text/javascript">
var map;
function init(){
map = new OpenLayers.Map('map');
var ol_wms = new OpenLayers.Layer.WMS( "OpenLayers WMS",
"http://vmap0.tiles.osgeo.org/wms/vmap0?", {layers: 'basic'} );
var boxes = new OpenLayers.Layer.Vector( "Boxes" );
var bounds = new OpenLayers.Bounds(120.18,31.35,121.26,31.12);
box = new OpenLayers.Feature.Vector(bounds.toGeometry());
boxes.addFeatures(box);
map.addLayers([ol_wms, boxes]);
var lonat = new OpenLayers.LonLat(120.8, 32);
map.setCenter(lonat);
map.zoomTo(5);
}
</script>
</head>
<body onload="init()">
<h1 id="title">Example</h1>
<div id="map" class="smallmap"></div>
</body>
</html>
其中:var bounds = new OpenLayers.Bounds(120.18,31.35,121.26,31.12);这句
120.18,31.35是矩形区域左下角的经纬度;121.26,31.12是右上角的经纬度
需要引用openlayers这个js库<script src="../lib/OpenLayers.js"></script>
你觉得靠3个点能画矩形吗?