效果图如下:
此处用的弹出层是我播客中前面提到的方法,这里我就不再提出来了。直接说google地址的反向解析问题:
需要的js地址:http://maps.google.com/maps?file=api&v=2&,也可以直接用此连接。
以下代码就可以实现:
var map;
var geocoder;
var address;
var webLongitude;
var webLatitude;
function initialize() {
map = new GMap2(document.getElementById("map_canvas"));
map.setCenter(new GLatLng(40.730885,-73.997383), 15);
map.setUIToDefault();
GEvent.addListener(map, "click", getAddress);
geocoder = new GClientGeocoder();
}
function getAddress(overlay, latlng) {
if (latlng != null) {
address = latlng;
geocoder.getLocations(latlng, showAddress);
}
}
function showAddress(response) {
map.clearOverlays();
if (!response || response.Status.code != 200) {
alert("Status Code:" + response.Status.code);
} else {
place = response.Placemark[0];
point = new GLatLng(place.Point.coordinates[1],
place.Point.coordinates[0]);
marker = new GMarker(point);
map.addOverlay(marker);
//全局付值, 用于页面需要它的地方获取到
webLongitude = place.Point.coordinates[1];
webLatitude = place.Point.coordinates[0];
marker.openInfoWindowHtml(
'<b>latlng:</b>' + place.Point.coordinates[1] + "," + place.Point.coordinates[0] + '<br>' +
'<b>Address:</b>' + place.address + '<br>' +
'<b>Accuracy:</b>' + place.AddressDetails.Accuracy + '<br>' +
'<b>Country code:</b> ' + place.AddressDetails.Country.CountryNameCode );
}
}