支持标记拖动,拖动记录经纬度,可通过地址信息获取经纬度。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html; charset=gbk"/>
<title>Google Maps JavaScript API Example</title>
<script src="http://ditu.google.cn/maps?file=api&v=3&key=AIzaSyAeKuo5dKfiRmBnPuky9K-fuUEWyWjiYv8&sensor=true" type="text/javascript"></script>
<script type="text/javascript">
var $ = function(id){
return document.getElementById(id);
}
String.prototype.trim = function(){
return this.replace(/^\s+/g,"").replace(/\s+$/g,"");
}
var decode = function(){
var latLng = $("lat_lng").value.trim();
if (latLng.indexOf(',') == -1)
{
alert("经纬度格式错误");
return {
lat: 0,
lng: 0
}
}else{
var s = latLng.split(',');
return {
lat: s[0],
lng: s[1]
}
}
}
//创建request对象
var createXMLHttpRequest = function(){
var xmlHttp ;
try {
//使用Msxml的一个版本来创建
xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
xmlHttp = false;
}
try {
//使用它的另外一个对象来创建
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e2) {
xmlHttp = false;
}
if (!xmlHttp && typeof XMLHttpRequest != 'undefined') {
//创建面向其它非微软浏览器的XMLHttpRequest对象
xmlHttp = new XMLHttpRequest();
}
return xmlHttp;
}
var xmlHttp ;
var handleStateChange = function(){
if(xmlHttp.readyState==4 && xmlHttp.status == 200){
var dd = xmlHttp.responseText;
var json = eval(dd);
}
}
var getLatLng = function(){
var address = $('uname').value;
var patrn= /['(' | '('][\w\W]*[')'| ')']/ ;
if(patrn.exec(address)){
address = address.replace(patrn,"");
}
//uri解码地址
address = encodeURI(address);
var url = "http://ditu.google.cn/maps/geo?output=json&oe=utf-8&q="+ address +"&key=AIzaSyAISC7Kveswljca_ezm9AGRbELDKlyYZuI&hl=zh-CN";
xmlHttp = createXMLHttpRequest();
xmlHttp.open("POST",url,true);
xmlHttp.onreadystatechange = function(){
if(xmlHttp.readyState==4 && xmlHttp.status == 200){
var dd = xmlHttp.responseText;
//var obj = eval('(' + dd + ')');
var obj =JSON.parse(dd);
var vlat = obj.Placemark[0].Point.coordinates[1] ;
var vlng = obj.Placemark[0].Point.coordinates[0] ;
var vlatlng = vlat + "," + vlng;
$('lat_lng').value = vlatlng;
mapShow();
}
};
xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
xmlHttp.send();
}
var test = function(){
var map = new GMap2(document.getElementById("map"));
map.addControl(new GSmallMapControl());
map.addControl(new GMapTypeControl());
var latLng = decode();
// var center = new GLatLng(latLng.lat,latLng.lng );
var center = new GLatLng(latLng.lat,latLng.lng );
map.setCenter(center, 13);
var marker = new GMarker(center);
map.addOverlay(marker);
}
var mapShow = function() {
if (GBrowserIsCompatible()) {
var map = new GMap2($("map"));
map.addControl(new GSmallMapControl());
map.addControl(new GMapTypeControl());
var latLng = decode();
var center = new GLatLng(latLng.lat,latLng.lng);
map.setCenter(center, 13);
var marker = new GMarker(center, {draggable: true});
GEvent.addListener(marker, "dragend", function() {
$('lat_lng').value = "";
var custPoint = marker.getPoint();
$('lat_lng').value = custPoint.lat()+ "," + custPoint.lng();
marker.setImage("http://ditu.google.cn/mapfiles/marker.png");
});
map.addOverlay(marker);
}
}
</script>
</head>
<body >
<p>
商户名称:<input type="text" name="uname" id="uname" value="" size="40" /> <input type="button" name="btn_uname" value="查询" οnclick="getLatLng()"/>
经纬度:<input type="text" name="lat_lng" id="lat_lng" value="" size="40" /> <input type="button" name="btn_lat_lng" value="查询" οnclick="mapShow()" />
</p>
<div id="map" style="width: 800px; height: 500px"></div>
</body>
</html>