首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Google地图和shadowbox

Google地图和shadowbox
EN

Stack Overflow用户
提问于 2011-09-28 02:11:49
回答 2查看 939关注 0票数 0

我正在构建一个javascript函数,在shadowbox中加载谷歌地图,使用下面的代码很容易(我使用插件calld GeoPlugin来获取经度和纬度,因为我现在不知道如何自动获取经度和经度):

代码语言:javascript
运行
复制
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:

代码语言:javascript
运行
复制
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();
}

有没有一种不用插件就能得到纬度和经度的方法呢?

有没有办法获取国家名称、城市名称、街道名称、邮政编码等信息?

提前感谢您的帮助!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-09-28 02:14:25

你想要哪个地方的经度和纬度?客户端机器?

票数 0
EN

Stack Overflow用户

发布于 2011-09-28 03:48:48

我不熟悉Shadowbox,但在处理地理编码器的结果时肯定会有一个问题。您应该使用results[0]而不是results[1]来获取latlng的第一个(如果有的话)反向地理编码。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7573750

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档