google的中 国部分地图有政策性偏差.下面是关于纠正坐标的想法 ,首先将google地图嵌到自己的系统上,
然后将经纬度数据读出发送到http://www.anttna.com/goffset/goffset.php?lat=xxx&lon=xxx 页面,该页面会自动返回修正数据,然后利用修正数据得到正确的坐标信息缓存到本地即可。
showLocation()
{
var lat = getElementById(“txtLatitude”).value;//这里是文本框传递参数
var lng = getElementById(“txtLongitude”).value;//这里是文本框传递参数
var point = new GLatLng(lat,lng);//原经纬度点
//通过接口http://www.anttna.com/goffset/goffset.php?lat=xxx&lon=xxx获得的修正经纬度数据
zoom=null;
offset_x=null;
offset_y=null;
var oXmlHttp =createXMLHTTP();//利用Ajax动态调用误差数据网页.
var url=”http://www.anttna.com/goffset/goffset.php?lat=” + lat + ”&lon=” + lng
var my_url=”../getdata.asp?url=”+escape(url);
oXmlHttp.open(“POST”,my_url,false);//获得getdata.asp 读取的误差数据
oXmlHttp.send(null);
var getdata = oXmlHttp.responseText;
var data = getdata.split(“,”); //获取经度,纬度修正数据..还有地图的缩放度
if(data.length == 3)
{
zoom=+data[0];
offset_x=+data[1];
offset_y=+data[2];
//getElementById(“txtLatitude”).value =offset_x;
//getElementById(“txtLongitude”).value =offset_y;
}
else
return;
//修正经纬度
map.clearOverlays();
map.setCenter(new GLatLng(lat,lng),14);
point= convertCoord(point,zoom,offset_x,offset_y);
map.addOverlay(new GMarker(point));
//lastMarker=point;
}
getdata.asp部份程序:
<%
url=request.querystring(“url”) //接htm传过来的网址
TransferHtmlPage(url)
TransferHtmlPage(url)
On Error Resume Next
dim oXmlHttp
dim r
set oXmlHttp=Server.createobject(“Microsoft.XMLHTTP”)
oXmlHttp.open ”POST”,url, false
oXmlHttp.send()
r = oXmlHttp.responseText
Response.Write(r)
End
%>
这个是别人用于web页面纠正的代码,ios的object C 和安卓的 java 代码类似,只不过他是每次访问纠片,地面站访问时 一般wifi断开,所以缓存本地即可
|