我正在构建一个javascript函数,在shadowbox中加载谷歌地图,使用下面的代码很容易(我使用插件calld GeoPlugin来获取经度和纬度,因为我现在不知道如何自动获取经度和经度):
function initGeoLocationOnDemand() {
$('a.btnInitGeoLoc').click(function () {
if (GBrowserIsCompatible()) {
Shadowbox.open({
player: "html",
content: "",
height: 300,
width: 500,
options: {
onFinish: function (item) {
var body = document.getElementById(Shadowbox.playerId);
var map = new GMap2(body);
//using geoPlugin to get lat and long
var point = new GLatLng(geoplugin_latitude(), geoplugin_longitude());
map.setCenter(point, 15);
var marker = new GMarker(point);
var addrFields = ['street_address'];
map.addOverlay(marker);
marker.openInfoWindow(document.createTextNode("hello");
// add some simple controls
map.addControl(new GSmallMapControl());
map.addControl(new GMapTypeControl());
}
}
});
} else {
alert("Your browser is not compatible with Google Maps!");
}
});
Shadowbox.init();
}现在我想使用GoogleMaps Reverse Geocoding在googleMaps标记窗口中获取信息窗口中的信息,如:城市名称、国家名称、街道名称、邮政编码等。
我按照GoogleMaps应用程序接口写了这段代码,但它不再工作了……始终使用GeoPlugin:
function initGeoLocationOnDemand() {
$('a.btnInitGeoLoc').click(function () {
if (GBrowserIsCompatible()) {
Shadowbox.open({
player: "html",
content: "",
height: 300,
width: 800,
options: {
onFinish: function (item) {
var body = document.getElementById(Shadowbox.playerId);
var geocoder;
var map = new google.maps.Map(body);
var infowindow = new google.maps.InfoWindow();
var marker;
function initialize() {
geocoder = new google.maps.Geocoder();
var latlng = new google.maps.LatLng(geoplugin_latitude(),geoplugin_longitude());
var myOptions = {
zoom: 8,
center: latlng,
mapTypeId: google.maps.MapTypeId.ROADMAP
}
map = new google.maps.Map(body, myOptions);
}
function codeLatLng() {
var input = document.getElementById("latlng").value;
var latlngStr = input.split(",", 2);
var lat = parseFloat(latlngStr[0]);
var lng = parseFloat(latlngStr[1]);
var latlng = new google.maps.LatLng(lat, lng);
geocoder.geocode({ 'latLng': latlng }, function (results, status) {
if (status == google.maps.GeocoderStatus.OK) {
if (results[1]) {
map.setZoom(11);
marker = new google.maps.Marker({
position: latlng,
map: map
});
infowindow.setContent(results[1].formatted_address);
infowindow.open(map, marker);
}
} else {
alert("Geocoder failed due to: " + status);
}
});
}
}
}
});
} else {
alert("Your browser is not compatible with Google Maps!");
}
});
Shadowbox.init();
}有没有一种不用插件就能得到纬度和经度的方法呢?
有没有办法获取国家名称、城市名称、街道名称、邮政编码等信息?
提前感谢您的帮助!
发布于 2011-09-28 02:14:25
你想要哪个地方的经度和纬度?客户端机器?
发布于 2011-09-28 03:48:48
我不熟悉Shadowbox,但在处理地理编码器的结果时肯定会有一个问题。您应该使用results[0]而不是results[1]来获取latlng的第一个(如果有的话)反向地理编码。
https://stackoverflow.com/questions/7573750
复制相似问题