在Meteor中显示Google地图中的附近地点

时间:2016-08-23 21:18:13

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

我想在谷歌地图上找到像健身房,atm等附近的地方。为此,我使用了dburles:google-maps包。我按照Google Maps API上的说明操作并执行了以下操作。生成地图,并显示中心标记,但我无法生成地点标记。谁能指出我做错了什么?

这是JS代码。

Template.map.helpers({
    exampleMapOptions: function() {
        // Make sure the maps API has loaded
        if (GoogleMaps.loaded()) {
            // Map initialization options
            var data=Test.findOne().address.geopoint;
            var lat=data[1];
            var lng=data[0];
            console.log([lat,lng]);
            return {
                center: new google.maps.LatLng(lat, lng),
                zoom: 14
            };
        }
    }
});





Template.map.onCreated(function() {
    var self = this;

    GoogleMaps.ready('exampleMap', function(map) {
        var marker;

        // Create and move the marker when latLng changes.
        self.autorun(function() {
            var data=Test.findOne().address.geopoint;
            var lat=data[1];
            var lng=data[0];

            if (! lat && ! lng)
                return;

            // If the marker doesn't yet exist, create it.
            if (! marker) {
                marker = new google.maps.Marker({
                    position: new google.maps.LatLng(lat, lng),
                    map: map.instance
                });
            }
            // The marker already exists, so we'll just change its position.
            else {
                marker.setPosition([lat,lng]);
            }

            // Center and zoom the map view onto the current position.
            map.instance.setCenter(marker.getPosition());
            map.instance.setZoom(14);


            var pyrmont = new google.maps.LatLng(lat,lng);

            // map = new google.maps.Map(document.getElementById('exampleMap'), {
            //     center: pyrmont,
            //     zoom: 15
            // });

            var request = {
                location: pyrmont,
                radius: '5000',
                types: ['store']
            };

            service = new google.maps.places.PlacesService(map);
            service.nearbySearch(request, callback);


        function callback(results, status) {
            if (status == google.maps.places.PlacesServiceStatus.OK) {
                for (var i = 0; i < results.length; i++) {
                    var place = results[i];
                    createMarker(results[i]);
                }
            }
        }

        });
    });
});

1 个答案:

答案 0 :(得分:0)

通过在地点搜索中将map替换为map.instance来解决问题。