首页 > 编程语言 >java调用百度地图web服务api-----该方法可用在js跨域请求上

java调用百度地图web服务api-----该方法可用在js跨域请求上

时间:2023-08-08 22:34:29浏览次数:47  
标签:web http 跨域 map js str address lat lng



百度地图Web服务API为开发者提供http接口,即开发者通过http形式发起检索请求,获取返回json或xml格式的检索数据。用户可以基于此开发JavaScript、C#、C++、Java等语言的地图应用。


api官网说明链接:

http://developer.baidu.com/map/webservice.htm



可用接口列举:

获取相关地址提示 place suggestion
http://api.map.baidu.com/place/v2/suggestion?query=水杉&region=成都&output=json&ak=42b8ececa9cd6fe72ae4cddd77c0da5d

 
获取坐标  geocoding 
            
http://api.map.baidu.com/geocoder?address=锦江区菱安路299号&output=json&key=42b8ececa9cd6fe72ae4cddd77c0da5d



http://api.map.baidu.com/place/v2/search?ak=42b8ececa9cd6fe72ae4cddd77c0da5d&output=json&query=蓝光coco金沙&page_size=10&page_num=0&scope=1&region=成都

{
     "status":0,
     "message":"ok",
     "total":2,
     "results":[
         {
             "name":"蓝光COCO金沙",
             "location":{
                 "lat":30.687544,
                 "lng":103.996691
             },
             "address":"西三环外金沙西源大道(IT大道旁)",
             "uid":"223992992c5ee7e0841541df"
         },
         {
             "name":"蓝光COCO金沙2期",
             "location":{
                 "lat":30.681123,
                 "lng":103.991123
             },
             "address":"青羊区金沙IT大道旁",
             "uid":"b7bb5abb1cd4982213293580"
         }
     ]
 }



设施导航
http://api.map.baidu.com/place/v2/search?ak=42b8ececa9cd6fe72ae4cddd77c0da5d&output=json&query=图书馆&page_size=20&page_num=0&scope=2&region=成都




获取坐标接口直接在浏览器请求的结果如下:

java调用百度地图web服务api-----该方法可用在js跨域请求上_百度地图




新建一个类,代码如下:


import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLEncoder;
import java.util.HashMap;
import java.util.Map;


public class LocationUtil {

	private static final String BAIDU_APP_KEY = "42b8ececa9cd6fe72ae4cddd77c0da5d";
	
	/**
	 * 返回输入地址的经纬度坐标 key lng(经度),lat(纬度)
	 */
	public static Map<String, String> getLatitude(String address) {
		try {
			// 将地址转换成utf-8的16进制
			address = URLEncoder.encode(address, "UTF-8");
			// 如果有代理,要设置代理,没代理可注释
			// System.setProperty("http.proxyHost","192.168.172.23");
			// System.setProperty("http.proxyPort","3209");

			URL resjson = new URL("http://api.map.baidu.com/geocoder?address="
					+ address + "&output=json&key=" + BAIDU_APP_KEY);
			BufferedReader in = new BufferedReader(new InputStreamReader(
					resjson.openStream()));
			String res;
			StringBuilder sb = new StringBuilder("");
			while ((res = in.readLine()) != null) {
				sb.append(res.trim());
			}
			in.close();
			String str = sb.toString();
			System.out.println("return json:" + str);
			if(str!=null&&!str.equals("")){
				Map<String, String> map = null;
				int lngStart = str.indexOf("lng\":");
				int lngEnd = str.indexOf(",\"lat");
				int latEnd = str.indexOf("},\"precise");
				if (lngStart > 0 && lngEnd > 0 && latEnd > 0) {
					String lng = str.substring(lngStart + 5, lngEnd);
					String lat = str.substring(lngEnd + 7, latEnd);
					map = new HashMap<String, String>();
					map.put("lng", lng);
					map.put("lat", lat);
					return map;
				}
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		return null;
	}

	public static void main(String args[]) {
		
		Map<String, String> map = LocationUtil.getLatitude("成都 高新西区西区大道1398号");
		if (null != map) {
			System.out.println(map.get("lng"));
			System.out.println(map.get("lat"));
		}
	}
}




运行后得到结果:

java调用百度地图web服务api-----该方法可用在js跨域请求上_json_02

标签:web,http,跨域,map,js,str,address,lat,lng
From: https://blog.51cto.com/u_16218512/7013091

相关文章

  • JSP----jQuery插件ContextMenu生成右键菜单
    讲述三个内容:一:简介二:使用示例三:在jsp中动态生成的代码记录一:简介ContextMenu 译自:http://www.trendskitchens.co.nz/jquery/contextmenu/ ContextMenu是一个轻量级jQuery插件,用于选择性地用自己创建的菜单代替浏览器的默认右键菜单。 特点 1.可以在一个页面中使用多个右......
  • oobabooga-text-generation-webui可能是最好的语言模型启动器(包含手把手安装教程)
    https://www.bilibili.com/read/cv24006101/引言:问:oobabooga是什么?oobabooga-text-generation-webui是一个用于运行类似Chatglm、RWKV-Raven、Vicuna、MOSS、LLaMA、llama.cpp、GPT-J、Pythia、OPT和GALACTICA等大型语言模型的GradioWeb用户界面。它的目标是成为文本生成的AUT......
  • - 前后端数据传输的编码格式(contentType) - Ajax朝后端提交文件数据 - Ajax朝后端提
    前后端数据传输的编码格式(contentType)前后端数据传输的请求方式有两种:get、post我们只研究post请求的编码格式三种编码格式urlencodedform-datajson发送post请求的方式form表单Ajaxpostman(第三方工具,需要下载) form表单发送post请求的时候数据的编码格式请求头conten......
  • 【C++第三方库】Windows下编译和使用websocketpp
    应用场景:使用C++开发一个支持websocket协议的服务进程,可与HTML5(浏览器js文件)通信。来实现替换基于firebreath框架的跨浏览器插件开发。当前,讲述websocketpp开源库的应用。目的是为了实现C++进程,支持websocket协议。但WebSocketpp是一个开源库,依赖于Boost和OpenSSL资源准......
  • 使用阿里云函数服务部署 nestjs
    一路踩坑对于一个现有的nestjs项目,如何在阿里云上进行函数部署ServerlessDevs按照官方推荐,使用ServerlessDevs,具体而言,先全局安装npminstall@serverless-devs/s-g,然后在项目中添加s.yaml配置文件。配置文件详细说明:Yaml规范-ServerlessDevsfc/docs/zh/yamla......
  • .Net Core WebApi
    目录MiniMalAPiDemoProgram.csSwagger文档+信息Program.csAPI版本控制ApiVersion.csVersion1Controller.csProgram.cs生成注释解决跨域.Net后台请求封装返回数据压缩默认压缩Gzip压缩缓存接口缓存静态文件缓存MiniMalAPi最小的api,请求都写在Program.cs中,可以做微服务D......
  • zabbix 基于 Web 界面的提供分布式系统监视
    zabbix基于Web界面的提供分布式系统监视,能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。目录一、zabbix概述二、监控原理三、zabbix组件四、zabbix架构五、zabbix工作原理六、部署zabbix七、总结  ......
  • 软件测试|json.decoder.JSONDecodeError: Expecting ‘,‘错误解决
    在处理JSON数据时,有时可能会遇到"json.decoder.JSONDecodeError:Expecting','"的错误,如下图的情况,本文将介绍这个错误的原因以及一些常见的解决方法。错误原因"json.decoder.JSONDecodeError:Expecting','"错误通常发生在解析JSON数据时,Python解析器期望在JSON对象或数组的元素......
  • 如何爆破js加密后的密码?
    如何爆破js加密后的密码?1、首先burp中安装插件:https://github.com/whwlsfb/BurpCrypto 安装插件完毕后,分析进行js加密的算法。2、分析加密过程:找到相关的加密算法的代码,分析代码逻辑。可以从登录界面的网站源代码里搜encrypt或者crypt字段。根据这段代码,最终passWord字段......
  • WEB自动化-框架-关键字封装
    所谓的关键字驱动,本质就是函数封装的过程。⾃动化当中的封装⽬的是:拆分重复的⾏为代码和测试数据,增加可维护性和复⽤性 对于某些用例都需要执行的功能,比如登陆、切换环境、登陆后进入大模块等。像这样的前置功能或者后置功能写到一个用例里面,其他用例就不能使用了。所以需要配......