谷歌地图GeoCode回调参数错误
Google Maps GeoCode Callback Parameter error
我读了,读了,又读了,结果我得出了以下结论:
// Place Markers on the Map
var PlaceMarkers = function (iw, adds, gc) {
var image = {url: "http://mywebstte.com/Images/star2.png", size: new google.maps.Size(24, 24)};
var aCt = adds.length;
for(var i = 0; i < aCt; ++i) {
GetLatLng(gc, adds[i].address, function(pos){
if(pos){
var ipop = '<h1>' + adds[i].title + '</h1>';
if(!isBlank(adds[i].url)){
ipop += '<a href="' + adds[i].url + '" target="_blank">' + adds[i].url + '</a><br />';
}
ipop += '<div class="map_item_content" id="mi_content' + i + '">' + adds[i].content + '</div>';
if(!isBlank(adds[i].mainphone)){
ipop += '<br /><strong>Phone:</strong> <a href="tel:'+adds[i].mainphone+'">' + adds[i].mainphone + '</a>';
}
if(!isBlank(adds[i].mainemail)){
ipop += '<br /><strong>Email:</strong> <a href="mailto:'+adds[i].mainemail+'">' + adds[i].mainemail + '</a>';
}
console.log('HEY NOW: ' + pos.toString() + ' - Location Found!'); // Never displays, as a result neither do the markers
var mark = new google.maps.Marker({title: adds[i].title, position: pos, map: map, icon: image, html: ipop});
google.maps.event.addListener(mark, 'click', function(){
iw.setContent(this.html);
iw.open(map, this);
});
}
});
}
};
// Get Lat/Lng Location
var GetLatLng = function(gc, add, callback) {
var ret = '';
gc.geocode({'address': add}, function(res, status) {
if (status == 'OK') {
ret = res[0].geometry.location;
console.log('Found Here: ' + ret.toString()); // Always displays
} else {
ret = null;
console.log('Nothing Found For: ' + add);
}
});
callback(ret);
};
现在,在GetLatLng
中,我的控制台将显示所传递地址的找到的lat/lng。我读到我需要回调,因为这些调用是异步的,然而,即使使用回调后PlaceMarkers
仍然是空白的,不会放置标记。
EDIT To GetLatLng
// Get Lat/Lng Location
var GetLatLng = function(gc, add, f) {
var ret = '';
gc.geocode({'address': add}, function(res, status) {
if (status == 'OK') {
f(res[0].geometry.location);
console.log('Found Here: ' + ret.toString()); // Always displays
}
});
return -1;
};
现在返回,但我得到一个错误与TypeError: adds[i] is undefined
您需要在地理编码器回调中使用可用的数据:
// Get Lat/Lng Location
var GetLatLng = function(gc, add, callback) {
var ret = '';
gc.geocode({'address': add}, function(res, status) {
if (status == 'OK') {
ret = res[0].geometry.location;
console.log('Found Here: ' + ret.toString()); // Always displays
} else {
ret = null;
console.log('Nothing Found For: ' + add);
}
callback(ret);
} /* end of geocoder callback function */ );
};
相关文章:
- 模版启动错误-类型错误(“参数”url'必须是字符串,而不是“+类型的url”)
- Node.js错误:参数太多上传批量数据时出错
- 为什么我会得到这个错误:ng:areq错误参数
- AngularJS'ng:areq错误参数"{controller}不是函数“;,CodeIgnite
- 控制器错误:参数不是函数,未定义
- 错误:参数'ContactController'不是函数,未定义
- “类型错误:参数 1 的 ..不是 Firefox 中的有限浮点值”
- AngularJS错误:“参数'FirstCtrl'不是一个函数,未定义”
- “未捕获的语法错误:参数列表后缺少 )”
- Javascript 未捕获的语法错误:参数列表后缺少 )
- 错误:参数 4 的值无效.属性“方法”:意外属性
- 语法错误:参数列表后缺少 )
- 我一直收到这个角度js错误:参数“示例控制器”不是一个函数,未定义
- 角度:'错误:areq错误参数'由于缩小
- 错误:ng:areq错误参数:参数'registerController'不是函数,未定义
- 引用错误:参数未在 Ember.js 中定义
- Angular js-错误:ng:areq错误参数-
- 为什么我得到错误参数是未定义的
- WebGL Fragment Shader构造函数错误-参数太多
- 错误:ng:areq错误参数和参数没有在ANGULARJS中定义