在我的visits
集合中,我有geocodeVisit
功能,该功能使用Google地理编码服务对地址进行地理编码。问题是流星脚本通常在加载谷歌地图API之前运行,导致Exception while invoking method 'visitInsert' ReferenceError: google is not defined
错误。所以我需要等待inser直到地理编码完成。我怎样才能做到这一点?这是visits
集合:
Meteor.methods({
visitInsert: function(visitAttributes) {
check(Meteor.userId(), String);
check(visitAttributes, {
nr: String,
visit_date: String
});
var properties = {
userId: Meteor.userId(),
position: geocodeVisit(visitAttributes.address)
};
var visit = _.extend(visitAttributes, properties);
var visitId = Visits.insert(visit);
return {
_id: visitId
};
}
});
geocodeVisit = function (address) {
this.unblock;
var geocoder = new google.maps.Geocoder();
geocoder.geocode( { 'address': address}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
return results[0].geometry.location;
}
});
}
答案 0 :(得分:0)
您应该将文件下载到" / lib"而不是在HTML代码中使用脚本标记包含地图api。目录。在运行任何Meteor代码之前,将加载该目录中的所有内容。
此外,您将遇到与代码异步的问题。您正尝试从geocodeVisit函数中的成功回调中返回值。我能看到的两种方法是: