这是一个根据
var convertor = new BMap.Convertor();
function getRestaurants(geohash){
$.get("/restaurants/" + geohash + "/0/200",{},function(json){
restaurants = JSON.parse(json);
var len = restaurants.length;
for(var i = 0; i < len; i++){
restaurants[i];
//获取数组中的对象的坐标,通过convertor.translate()方法转换为百度坐标,但是convertor.translate()是一个异步方法,如何坐标与数组中的对象对应起来
var ggPoint = new BMap.Point(restaurants[i]["longitude"],restaurants[i]["latitude"]);
var pointArr = [];
pointArr.push(ggPoint);
convertor.translate(pointArr, 1, 5,function(data){
//GPS坐标转换为百度坐标
//这里我要怎么写获取到对应的 i 呢?
if(data.status === 0) {
var marker = new BMap.Marker(data.points[0]);
var title = restaurants[i]["name"];
var content = restaurants[i]["description"] ;
map.addOverlay(marker);
addClickHandler(title,content,marker);
}
});
}
},"json")
}
(function(i) {
convertor.translate(pointArr, 1, 5, function(data) {
//GPS坐标转换为百度坐标
//这里我要怎么写获取到对应的 i 呢?
if (data.status === 0) {
var marker = new BMap.Marker(data.points[0]);
var title = restaurants[i]["name"];
var content = restaurants[i]["description"];
map.addOverlay(marker);
addClickHandler(title, content, marker);
}
})
})(i);
var convertor = new BMap.Convertor();
function getRestaurants(geohash){
$.get("/restaurants/" + geohash + "/0/200",{},function(json){
var restaurants = JSON.parse(json);
var len = restaurants.length,
points = [];
for(var i = 0; i < len; i++){
points.push(new BMap.Point(restaurants[i]["longitude"], restaurants[i]["latitude"]));
}
//translate 方法一次性可以转换N个坐标, 所以不需要在for里面调用N次
convertor.translate(pointArr, 1, 5, function(data){
if(data.status === 0) {
//遍历转换后的结果
for(var i=0, j=data.points.length; i<j; i++){
var marker = new BMap.Marker(data.points[i]);
var title = restaurants[i]["name"];
var content = restaurants[i]["description"] ;
map.addOverlay(marker);
addClickHandler(title, content, marker);
}
}
});
},"json")
}
translate
方法一次可以转换N个坐标, 所以不需要在for
循环中调用N次该方法.
参考自: http://developer.baidu.com/map/jsdemo.htm#a5_3