根据百度地图API获取指定地点的经纬度

做项目时,遇到对地点获取地图中对应的经纬度,作一下笔记,以备以后直接使用

package com.hpzx.data;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;

import com.hpzx.json.HTTPTokener;
import com.hpzx.json.JSONException;

/**
 * 获取经纬度通过
 *
 * @author jueyue 返回格式:Map<String,Object> map map.put("status",
 *         reader.nextString());//状态 map.put("result", list);//查询结果
 *         list<map<String,String>> 密钥:f247cdb592eb43ebac6ccd27f796e2d2
 */
public class GetLatAndLngByBaidu {
	/**
	 * @param addr
	 *            查询的地址
	 * @return
	 * @throws IOException
	 */
	public static String getCoordinate(String addr) throws IOException {
		String address = null;
		try {
			address = java.net.URLEncoder.encode(addr, "UTF-8");
		} catch (UnsupportedEncodingException e1) {
			e1.printStackTrace();
		}
		String key = "f247cdb592eb43ebac6ccd27f796e2d2";
		String url = String
				.format("http://api.map.baidu.com/geocoder?address=%s&output=json&key=%s",
						address, key);
		URL myURL = null;
		URLConnection httpsConn = null;
		try {
			myURL = new URL(url);
		} catch (MalformedURLException e) {
			e.printStackTrace();
		}

		httpsConn = (URLConnection) myURL.openConnection();
		// 不使用代理
		if (httpsConn != null) {
			InputStreamReader insr = null;

			insr = new InputStreamReader(httpsConn.getInputStream(), "UTF-8");

			BufferedReader br = new BufferedReader(insr);
			StringBuffer buf = new StringBuffer();
			String data = null;
			while ((data = br.readLine()) != null) {
				buf.append(data.replace(":", ""));
				// System.out.println(data);
			}
			try {
				return getLoc(buf.toString());
			} catch (JSONException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		return null;

	}

	public static String getLoc(String string) throws JSONException {
		StringBuffer buf = new StringBuffer();
		HTTPTokener x = new HTTPTokener(string);
		String t;
		t = x.nextToken();
		while (x.more()) {
			t = x.nextToken();
			if (t.equalsIgnoreCase("lng")) {
				break;
			}
		}
		if (t.equalsIgnoreCase("lng")) {
			buf.append(x.nextToken());
			if (x.nextToken().equals("lat")) {
				buf.append(x.nextToken());
			}
			return buf.toString();
		}
		return null;
	}

	public void getCoordinate(String longitude, String latitude) {
		String url = String
				.format("http://api.map.baidu.com/geocoder?output=json&"
						+ "location=%s,%s%s&key=f247cdb592eb43ebac6ccd27f796e2d2",
						latitude, "%20", longitude);
		URL myURL = null;
		URLConnection httpsConn = null;
		try {
			myURL = new URL(url);
		} catch (MalformedURLException e) {
			e.printStackTrace();
		}
		try {
			httpsConn = (URLConnection) myURL.openConnection();
			if (httpsConn != null) {
				InputStreamReader insr = new InputStreamReader(
						httpsConn.getInputStream(), "UTF-8");
				BufferedReader br = new BufferedReader(insr);
				String data = null;
				while ((data = br.readLine()) != null) {
					System.out.println(data);
				}
				insr.close();
			}
		} catch (IOException e) {
			e.printStackTrace();
		}

	}

	public static void main(String[] args) throws IOException {
		String str = "新疆维吾尔自治区哈密市南湖乡大南湖矿区";
		GetLatAndLngByBaidu lotAndLng = new GetLatAndLngByBaidu();
		String result = GetLatAndLngByBaidu.getCoordinate(str).replace(":", "");
		System.out.println(result);
		String[] loc = result.split(",");
		lotAndLng.getCoordinate(loc[0], loc[1]);
	}
}

根据百度地图API获取指定地点的经纬度

时间: 2024-12-12 18:26:34

根据百度地图API获取指定地点的经纬度的相关文章

HTML5页面直接调用百度地图API,获取当前位置,直接导航目的地(转)

HTML5页面直接调用百度地图API,获取当前位置,直接导航目的地 我是应用在微信中,自定义菜单,菜单直接链接到这个HTML5页面,获取当前位置后,页面中定好目的地,这样打开页面后直接进入导航页面 可以省下先发送位置信息后,点确定再出导航,省一步, <!DOCTYPE html> <html lang="zh-cmn-Hans"> <meta charset="UTF-8"> <meta name="viewpor

HTML5 利用百度地图API获取当前位置

由于项目需要定位到城市,研究了地理定位,做了一些手记,和大家分享一下~ 项目的开发需求是获取到当前用户的位置,然后为用户提供一些服务. 此时可以采用两种定位方式,一种是用GPS的定位,然后将定位到的经纬度传递到百度地图的API接口当中.另一种方法是利用百度API接口,使用IP地址定位,然后使用IP地址获取到的经纬度,传递到百度地图API接口中. 自己尝试使用了这两种方式进行定位.相对来说,IP地址定位,偏差比较大.GPS定位虽然还可以,但是也不足够精确.产生比较大偏差的原因有可能是以下几点造成的

PhoneGap Geolocation结合百度地图api获取地理位置api

一.使用百度地图API 1.地址:http://developer.baidu.com/map/ 2.在js DEMO中获取反地址解析的DEMO 3.修改这个DEMO的密钥,去创建应用就能创建密钥,然后复制密钥到这个页面即可 4.使用PhoneGap Geolocation 获取地理位置获取到的经度和纬度赋值给point即可 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <

利用百度地图API获取当前位置信息

利用百度地图API可以做很多事情,个人感觉最核心也是最基础的就是定位功能了.这里分享一个制作的JS可以实现登录网页后定位: 1 <script type="text/javascript"> 2 var map; 3 var gpsPoint; 4 var baiduPoint; 5 var gpsAddress; 6 var baiduAddress; 7 var x; 8 var y; 9 function getLocation() { 10 //根据IP获取城市 1

百度地图API获取数据

目前,大厂的服务范围越来越广,提供的数据信息也是比较全的,在生活服务,办公领域,人工智能等方面都全面覆盖,相对来说,他们的用户基数大,通过用户获取的信息也是巨大的.除了百度提供api,国内提供免费API获取数据的还有很多,包括新浪.豆瓣电影.饿了么.阿里.腾讯等今天使用百度地图API来请求我们想要的数据. 第一步.注册百度开发者账号 注册成功后就可以获取到应用服务AK也就是API秘钥,这个是最重要的,应用名称可以随便取,如果是普通用户一天只有2000调用限额,认证用户一天有10万次调用限额 在百

百度地图API,指定比例尺大小

百度地图在自动定位时,出现的比例尺大小是默认的5公里.但这个范围太大,不能满足应用需求,需要在定位时指定比例尺大小.通过摸索和查询,终于找到了解决方法. 就是要在定位监听中加入以下代码, float f = mBaiduMap.getMaxZoomLevel();//19.0 最小比例尺 // float m = mBaiduMap.getMinZoomLevel();//3.0 最大比例尺 MapStatusUpdate u = MapStatusUpdateFactory.newLatLng

Python通过百度地图API获取地址的经纬度

API 地址:http://developer.baidu.com/map/index.php?title=webapi/guide/webservice-geocoding 一个简单的API,可以通过地址(地名)获得经纬度,或者通过经纬度获取周边的位置信息. ak是百度开发者APIKEY,注册地址:http://developer.baidu.com/ #!/usr/bin/env python3 import requests import json def locatebyAddr(add

利用百度地图API获取用户浏览器所在省市区

好久没用过h5新api地理定位--navigator.geolocation, 就在前几天,,, 发现,不能用了???(谷歌被墙了,陷入悲伤) 整个人都懵逼,项目需要定位啊,,,懵逼,,, 然后就写了三天,tm的写不出来,今天终于,,, 直接上代码咯. <!doctype html><html><head> <meta charset="utf-8"> <title>标题</title> <meta name

百度地图api获取经纬度和城市名称

想集成百度API定位需要完成以下步骤: 1:注册开发者 2:申请key 3:下载jar包 4:代码集成 先看下效果: 1:注册开发者 最好提前申请,审核需要1,2天 2:申请key 本人用的是Android Studio,所以用命令行查看SHA1码 3:下载jar包 只需下载"定位功能"的开发包即可 4:代码集成(详细可见官方讲解,以下代码以简洁实用为主) package com.union.roid.testroid; import android.app.Activity; imp