如何在Meteor app表单提交中实现地理编码?

时间:2013-07-19 12:39:43

标签: meteor geocoding

我有一个用户提交的表单,其中包含一个位置字段我想调用Google地理编码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);
  }
});

我能找到的唯一一个让这段代码能够提醒正确坐标的地方是我的集合posts.js文件,但它也导致服务器错误:

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

1 个答案:

答案 0 :(得分:0)

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

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);
    }
});