【问题标题】:Google Geocoder loading issue谷歌地理编码器加载问题
【发布时间】:2016-01-07 01:44:21
【问题描述】:

查看 Google API 文档后,我仍然感到困惑。我想使用 Google Geocoding API 但控制台抛出错误

地理编码器未定义

是什么导致它在定义后抛出此错误

var geocoder = new google.maps.Geocoder();

这是我的地图代码

GoogleMaps.ready('locationRadiusMap', function(map) {

        var markers = [];
        var input = $("#pac-input")[0];
        var searchBox = new google.maps.places.SearchBox(input);
        var instance = GoogleMaps.maps.locationRadiusMap.instance;
        var geocoder = new google.maps.Geocoder();

        var autocomplete = new google.maps.places.Autocomplete(input);
        // instance.controls[google.maps.ControlPosition.TOP_LEFT].push(input);

        google.maps.event.addListener(searchBox, 'places_changed', function(m) {

              function geocodeLatLng(geocoder, map, information) {
                var geocoder = new google.maps.Geocoder();

                   var userlat = Session.get('userlat');
                   var userlng = Session.get('userlng');
                   var latLng = userlat.toString() + ", " + userlng.toString();

                    var latLngStr = latLng.split(",", 2);
                    var latLngLocate = {
                        lat: parseFloat(latLngStr[0]),
                        lng: parseFloat(latLngStr[1])
                    };
                    geocoder.geocode({
                        'location': latLngLocate
                    }, function(results, status) {
                        if (status === Geocoder.status.OK) {
                            if (results[1]) {
                                console.log(results[1].formatted_address);
                            }
                        } 
                        else {
                            window.alert('No results found');
                        } 

                    });
                }

            var places = searchBox.getPlaces();
            if (places.length == 0) {
                return;
            }

            markers.forEach(function(marker) {
                marker.setMap(null);
                // areaCircle.setMap(null);
            });

            markers = [];

            places.forEach(function(place) {
                var image = {
                    url: place.icon,
                    size: new google.maps.Size(71, 71),
                    origin: new google.maps.Point(0, 0),
                    anchor: new google.maps.Point(17, 34),
                    scaledSize: new google.maps.Size(25, 25)
                };


                var areaCircle = new google.maps.Circle({
                    map: map.instance,
                    center: place.geometry.location,
                    zoom: 7,
                    radius: 8093.4,
                    strokeColor: "#f8504b",
                    strokeOpacity: 0.8,
                    strokeWeight: 2,
                    fillColor: "#f8504b",
                    fillOpacity: 0.4
                });

                var marker = new google.maps.Marker({
                    map: map.instance,
                    icon: image,
                    title: place.name,
                    draggable: true,
                    position: place.geometry.location,
                    animation: google.maps.Animation.DROP
                });

                // Create a marker for each place.

                markers.push(marker);
                console.log(marker);


                var userlat = marker.getPosition().lat();
                var userlng = marker.getPosition().lng();

                var locate = marker.getPosition();
                console.log(locate);


                Session.set("userlat", userlat);
                Session.set("userlng", userlng);

                console.log(userlat, userlng);
                var latLng = userlat.toString() + ", " + userlng.toString();

                geocodeLatLng(geocoder, map);

                var mape = map.instance;
                mape.setCenter(marker.getPosition());

这会通过应用键加载到地图中

GoogleMaps.load({
        v: '3',
        key: 'KEYHERE',
        libraries: 'geometry,places'
    });

【问题讨论】:

  • 是否应该一直使用JS代码框,即使它只是单行Adam?只是好奇

标签: google-maps meteor google-maps-api-3


【解决方案1】:

这条线炸了:

if (status === Geocoder.status.OK) {

试试这个:

if (status === google.maps.GeocoderStatus.OK) {

google.maps.GeocoderStatus 应该存在,但 Geocoder 不存在。

【讨论】:

  • 感谢您的快速回复。我尝试了你给的两个选项,它给出了另一个错误 Uncaught TypeError: Cannot read property 'OK' of undefined 。
  • 尝试在定义地理编码器后添加此行:console.log(google.maps.GeocoderStatus.OK)。我正在测试谷歌的版本能够找到这个确定,它在官方文档中,所以如果它在你的回调中不起作用,那么我很难过......
  • 它现在可以工作了,谢谢,我添加了 console.log,现在它在注销该值时神奇地工作了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多