javascript - Meteor 实现 Google map 和 Google 地方信息

标签 javascript google-maps meteor google-places

我正在尝试在我的 Meteor 应用程序上实现 Google map ,该 map 将获取用户的位置,然后找到用户附近提供食物的地点。我首先实现 example

由谷歌提供,当我这样做时效果很好;但是我试图通过将其添加到实际的 Javascript 文件中来正确实现它,但现在它给了我一个“Google 未定义”错误。

menuList = new Mongo.Collection('items');
if (Meteor.isClient) {

    var pls;
    var map;
    var infowindow;
    Meteor.startup(function () {
        //get user location and return location in console
        var options = {
            enableHighAccuracy: true,
            timeout: 5000,
            maximumAge: 0
        };

        function success(pos) {
            var crd = pos.coords;

            console.log('Your current position is:');
            console.log('Latitude : ' + crd.latitude);
            console.log('Longitude: ' + crd.longitude);
            console.log('More or less ' + crd.accuracy + ' meters.');
            pls = {lat: crd.latitude, lng: crd.longitude};
        };

        function error(err) {
            console.warn('ERROR(' + err.code + '): ' + err.message);
        };

        navigator.geolocation.getCurrentPosition(success, error, options);
    })

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

        createMarker: function (place) {
            var placeLoc = place.geometry.location;
            var marker = new google.maps.Marker({
                map: map,
                position: place.geometry.location
            });

            google.maps.event.addListener(marker, 'click', function () {
                infowindow.setContent(place.name);
                infowindow.open(map, this);
            });
        }


    })

    Template.searchIt.helpers({
        'initMap': function () {
            console.log("HERE");
            //Dummy values I placed for StackOverflow
            var pyrmont = {lat: -33.234, lng: 95.343};

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

            infowindow = new google.maps.InfoWindow();
            var service = new google.maps.places.PlacesService(map);
            service.nearbySearch({
                location: pyrmont,
                radius: 500,
                types: ['food']
            }, callback);
        }


    })
}
<head>
    <title>Place searches</title>
    <meta name="viewport" content="initial-scale=1.0, user-scalable=no">
    <meta charset="utf-8">
    <div id="map"></div>
    <script src="https://maps.googleapis.com/maps/api/js?key=AIzaSyACgaDFJrh2pMm-bSta1S40wpKDDSpXO2M	
&signed_in=true&libraries=places" async defer></script>
    <style>
      html, body {
        height: 100%;
        margin: 0;
        padding: 0;
      }
      #map {
        height: 100%;
      }
    </style>
    
  </head>
  <body>
      {{>searchIt}}
    
  </body>


<template name="searchIt">
{{initMap}}
</template>

最佳答案

您应该尝试 dburles:google-maps 软件包。

这是作者编写的示例:http://meteorcapture.com/how-to-create-a-reactive-google-map/

玩得开心!

关于javascript - Meteor 实现 Google map 和 Google 地方信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35246452/

相关文章:

javascript - 将 <select> 下拉菜单变成更高级的 JQuery 插件是什么?

javascript - 使用 Google Autocomplete API 根据位置名称获取经纬度

android - map 未在发布的 Android 应用上显示

Android将谷歌地图添加到 ListView 中

node.js - meteor 异常 : The package named router does not exist

javascript - meteor Kurourin 分页不起作用

javascript - 如何避免同一事件的重复执行?

javascript - 将 Window 对象上的鼠标滚轮事件更改为 {passive : false} - Javascript

javascript - 如果scrollTop 向后移动,你如何记住它?

javascript - 如何附加其中包含其他嵌套元素的 div?