0

我有一个用户提交的带有位置字段的表单。我想调用 Google Geocoding API 并获取位置的经纬度以确保该位置存在,然后将所有三个数据发送到数据库。

geocoder = new google.maps.Geocoder();
geocoder.geocode( { 'address': location}, function(results, status) {
  if (status == google.maps.GeocoderStatus.OK) {
    alert(results[0].geometry.location);
  } else {
    alert('Geocode was not successful for the following reason: ' + status);
  }
});

我能找到获取此代码以提醒正确坐标的唯一位置是在我的 collections posts.js 文件中,但它也会导致服务器错误:

Exception while invoking method 'post' ReferenceError: google is not defined
4

1 回答 1

0

地理编码应在添加帖子页面管理器中完成(仅限客户端)。因为地理编码调用是异步的,所以在发布到数据库之前我没有得到响应。将 db post 移动到 geocode 函数的成功分支内修复了它。

geocoder = new google.maps.Geocoder();
geocoder.geocode( { 'address': pin.location}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
        pin.lat = results[0].geometry.location.lat();
        pin.lng = results[0].geometry.location.lng();

        Meteor.call('post', pin, function(error, id){
            if (error)
                return alert(error.reason);

            Meteor.Router.to('pinPage', pin);
        });
    } else {
        alert('Geocode was not successful for the following reason: ' + status);
    }
});
于 2013-07-19T15:40:39.797 回答