百度api查询多个地址的经纬度的问题
在使用百度api查询多个地址的经纬度的时候,由于百度api提供的经纬度查询方法是回调函数,并且后续操作必须等经纬度获取完成才能进行,问题就存在于怎么判断所有地点是否都回调完成了,问了之前的一个前端大佬同事(我是一只前端弱鸡),给我提供的思路,在百度api的回调函数里面再调一次自定义的回调函数,从而在自定义的函数里面进行判断所有地点是否都回调完成了。
下面是具体代码,
<script>
//所有待查询经纬度的地点
var allAddress=new Array("北京西站","成都东站","上海南站","西安北站");
//回调前计数用
var callbackBefore = 0;
//回调后计数用
var callbackAfter = 0;
//存放经纬度
var geoCoord={};
//循环所有地址
for (var i = 0; i < allAddress.length; i++) {
//先判断是否已经查询了经纬度(排重)
if (!(allAddress[i] in geoCoord)) {
//去调百度api,查经纬度了,先记个数
callbackBefore++;
GetPoint(allAddress[i], function (address, point) {
//回调回来了,经纬度,再记个数
callbackAfter++;
geoCoord[address] = point;
//判断回调之前的数目和回调之后的数目是否一样,一样就表示所有地址都查询完了
if (callbackBefore == callbackAfter) {
//去做你想做的操作了吧
//Travel(geoCoord);
return;
}
});
} }
//查询经纬度的函数
function GetPoint(address, callback) {
var local = new BMap.LocalSearch(address,
{
//智能搜索,这本来就是一个回调的方法
"onSearchComplete": function (obj) {
//存放经纬度
var point = [];
if (obj && obj.getPoi(0)) {
var pp = obj.getPoi(0).point;
point.push(pp.lng);
point.push(pp.lat);
//回调方法
callback(address, point);
}
}
});
local.search(address);
}
</script>
我实际情况是那个地址allAddress比较复杂,需要二次循环,不像上面例子这么简单,所以才使用的这种方法。
百度api查询多个地址的经纬度的问题的更多相关文章
- 腾讯云图片鉴黄集成到C# SQL Server 怎么在分页获取数据的同时获取到总记录数 sqlserver 操作数据表语句模板 .NET MVC后台发送post请求 百度api查询多个地址的经纬度的问题 try{}里有一个 return 语句,那么紧跟在这个 try 后的 finally {}里的 code 会 不会被执行,什么时候被执行,在 return 前还是后? js获取某个日期
腾讯云图片鉴黄集成到C# 官方文档:https://cloud.tencent.com/document/product/641/12422 请求官方API及签名的生成代码如下: public c ...
- 利用百度API(js),通过地址获取经纬度的注意事项
网上给的很多答案都是这种: http://api.map.baidu.com/geocoder?address=地址&output=输出格式类型&key=用户密钥&city=城 ...
- 调用百度API接口 正解析地址和逆解析
地址解析(结构化地址 解析得到 经纬度): public void SaveLocation(DataRequest<Location> request, DataResponse< ...
- java工具类(一)之服务端java实现根据地址从百度API获取经纬度
服务端java实现根据地址从百度API获取经纬度 代码: package com.pb.baiduapi; import java.io.BufferedReader; import java.io. ...
- 通过地址获得经纬度(百度Geocoding API)
1.什么是Geocoding? Geocoding API 是一类简单的HTTP接口,用于提供从地址到经纬度坐标或者从经纬度坐标到地址的转换服务,用户可以使用C# .C++.Java等开发语言发送HT ...
- 【地图功能开发系列:二】根据地址名称通过百度地图API查询出坐标
根据地址名称通过百度地图API查询出坐标 百度地图ApiUrl string url = "http://api.map.baidu.com/geocoder?address={0}& ...
- java根据地址获取百度API经纬度
java根据地址获取百度API经纬度(详细文档) public void getLarLng(String address) throws Exception { String ak = " ...
- .net根据经纬度获取地址(百度api)
private string GetAddress(string lng, string lat) { try { string url = @"http://api.map.baidu.c ...
- 百度API从经纬度坐标到地址的转换服务
/// <summary> /// 百度API从经纬度坐标到地址的转换服务 /// </summary> /// <param name="lng"& ...
随机推荐
- PHP 百万级数据导出方案(多 CSV 文件压缩)
ps:来源 :https://laravel-china.org/articles/15944/php-million-level-data-export-scheme-multi-csv-file- ...
- QT中报错collect2:ld returned 1 exit status的可能原因。
参考:https://blog.csdn.net/u014546553/article/details/78781547 1.编译成功的例子在后台执行,有时一闪而过,如果再次build ,则会提示上述 ...
- 支持复制粘贴word图片的文本编辑器
下载并打开基于PHP环境的工程: 运行: 尝试使用文档复制后粘贴进来: 通过粘贴后,文档以及图片被粘贴进来了,看看html代码: 由此可看出图片全部使用img标签统一. 看看文档图片被放置在哪了: ...
- 带参数的main函数以及execl函数的应用
---恢复内容开始--- 代码1:(带参main函数) #include<stdio.h> int main(int number, char *parameter[]) { ; prin ...
- django创建上下文
在app中创建context_processes.py(可以是别的名字),然后加载到settings里,这样所有的网页都可以传入变量 from .models import User def app0 ...
- MongoDB学习小结
启动对应server:cd:到mangodb安装根目录下 mongod --dbpath db路径 创建MangoDB服务: mongod.exe --logpath d:/mongodb/logs/ ...
- 菜刀(代码执行)函数和命令执行函数详解及Getshell方法
i春秋作家:大家奥斯的哦 原文来自:https://bbs.ichunqiu.com/thread-41471-1-1.html 代码执行函数 VS 命令执行函数 一直想整理这两块的内容,但是一直没时 ...
- 周末,说声php的setter&getter(魔术)方法,你们辛苦了
php 作为快速迭代项目的语言,其牛逼性质自不必多说.今天咱们要来说说php语言几个魔术方法,当然了,本文主要以setter&getter方法说明为主. 首先,咱们得知道什么叫魔术方法? 官方 ...
- IntelliJ Idea 授权服务器使用
JetBrains授权服务器 1 http://intellij.mandroid.cn/ 支持的版本 IntelliJ IDEA 7.0 或更高ReSharper 3.1 或更高ReSharper ...
- python tricks
1. cities = ['Marseille', 'Amsterdam', 'New York', 'Londom'] # the good way for i, city in enumerate ...