android安卓根据地名查找经纬度(百度地图)
来源:互联网 发布:mac系统适用的游戏 编辑:程序博客网 时间:2024/05/17 06:49
// 开启一个子线程,进行网络操作,等待有返回结果,使用handler通知UI,senon
new Thread(newworkTask).start();
Map<String, Double> myMap ;
Map<String, Double> myMap2 ;
public void getLatAndLngByAddress(String addr){
String address = "";
String lat = "";
String lng = "";
try {
address = java.net.URLEncoder.encode(addr,"UTF-8");
} catch (UnsupportedEncodingException e1) {
e1.printStackTrace();
}
String url = String.format("http://api.map.baidu.com/geocoder/v2/?"
+"ak=4rcKAZKG9OIl0wDkICSLx8BA&output=json&address=%s",address);
URL myURL = null;
URLConnection httpsConn = null;
//进行转码
try {
myURL = new URL(url);
} catch (MalformedURLException e) {
}
try {
httpsConn = (URLConnection) myURL.openConnection();
if (httpsConn != null) {
InputStreamReader insr = new InputStreamReader(
httpsConn.getInputStream(), "UTF-8");
BufferedReader br = new BufferedReader(insr);
String data = null;
if ((data = br.readLine()) != null) {
//判断查询到的数据是否可用,status=0正确,status=1为未查询到
Log.e("msg","这是获取到的地理信息"+data);
if(data.substring(data.indexOf("\"status\":")+("\"status\":").length(),data.indexOf(",\"")).equals("0")){
lat = data.substring(data.indexOf("\"lat\":")
+ ("\"lat\":").length(), data.indexOf("},\"precise\""));
lng = data.substring(data.indexOf("\"lng\":")
+ ("\"lng\":").length(), data.indexOf(",\"lat\""));
}else{
lat = ""+0;
lng = ""+0;
}
}
insr.close();
}
} catch (IOException e) {
}
Map<String, Double> map = new HashMap<String, Double>();
map.put("lat", Double.parseDouble(lat));
map.put("lng", Double.parseDouble(lng));
myMap =map;
}
Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
Log.e("msgg",myMap.get("lat")+" "+myMap.get("lng"));
Log.e("msgg",myMap2.get("lat")+" "+myMap2.get("lng"));
// UI界面的更新等相关操作
startLat = new LatLng(myMap.get("lat"),myMap.get("lng"));
endLat = new LatLng(myMap2.get("lat"),myMap2.get("lng"));
//根据经纬度去获取导航路线的方法
SearchButtonProcess(startLat,endLat);
}
};
/**
* 网络操作相关的子线程,senon
*/
Runnable networkTask = new Runnable() {
@Override
public void run() {
// TODO
// 在这里进行 http request.网络请求相关操作
getLatAndLngByAddress(startPlace);
getLatAndLngByAddress2(endPlace);
Message msg = Message.obtain();
Bundle data = new Bundle();
data.putString("value", "请求结果");
msg.setData(data);
handler.sendMessage(msg);
}
};
new Thread(newworkTask).start();
Map<String, Double> myMap ;
Map<String, Double> myMap2 ;
public void getLatAndLngByAddress(String addr){
String address = "";
String lat = "";
String lng = "";
try {
address = java.net.URLEncoder.encode(addr,"UTF-8");
} catch (UnsupportedEncodingException e1) {
e1.printStackTrace();
}
String url = String.format("http://api.map.baidu.com/geocoder/v2/?"
+"ak=4rcKAZKG9OIl0wDkICSLx8BA&output=json&address=%s",address);
URL myURL = null;
URLConnection httpsConn = null;
//进行转码
try {
myURL = new URL(url);
} catch (MalformedURLException e) {
}
try {
httpsConn = (URLConnection) myURL.openConnection();
if (httpsConn != null) {
InputStreamReader insr = new InputStreamReader(
httpsConn.getInputStream(), "UTF-8");
BufferedReader br = new BufferedReader(insr);
String data = null;
if ((data = br.readLine()) != null) {
//判断查询到的数据是否可用,status=0正确,status=1为未查询到
Log.e("msg","这是获取到的地理信息"+data);
if(data.substring(data.indexOf("\"status\":")+("\"status\":").length(),data.indexOf(",\"")).equals("0")){
lat = data.substring(data.indexOf("\"lat\":")
+ ("\"lat\":").length(), data.indexOf("},\"precise\""));
lng = data.substring(data.indexOf("\"lng\":")
+ ("\"lng\":").length(), data.indexOf(",\"lat\""));
}else{
lat = ""+0;
lng = ""+0;
}
}
insr.close();
}
} catch (IOException e) {
}
Map<String, Double> map = new HashMap<String, Double>();
map.put("lat", Double.parseDouble(lat));
map.put("lng", Double.parseDouble(lng));
myMap =map;
}
Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
Log.e("msgg",myMap.get("lat")+" "+myMap.get("lng"));
Log.e("msgg",myMap2.get("lat")+" "+myMap2.get("lng"));
// UI界面的更新等相关操作
startLat = new LatLng(myMap.get("lat"),myMap.get("lng"));
endLat = new LatLng(myMap2.get("lat"),myMap2.get("lng"));
//根据经纬度去获取导航路线的方法
SearchButtonProcess(startLat,endLat);
}
};
/**
* 网络操作相关的子线程,senon
*/
Runnable networkTask = new Runnable() {
@Override
public void run() {
// TODO
// 在这里进行 http request.网络请求相关操作
getLatAndLngByAddress(startPlace);
getLatAndLngByAddress2(endPlace);
Message msg = Message.obtain();
Bundle data = new Bundle();
data.putString("value", "请求结果");
msg.setData(data);
handler.sendMessage(msg);
}
};
阅读全文
0 0
- android安卓根据地名查找经纬度(百度地图)
- android 百度地图 四、(根据地名查询经纬度)
- 百度地图根据经纬度获取地名
- Android学习笔记之百度地图(根据地名查询经纬度)
- Android学习笔记之百度地图(根据地名查询经纬度)(转载)
- 高德地图根据地名获取经纬度
- js 百度地图通过经纬度获取地名
- android 百度地图根据地址检索经纬度
- 根据百度地图JSAPI查找某个地址的经纬度坐标
- 根据经纬度查询地名,
- 根据地名获取经纬度
- 百度地图--根据经纬度定位
- (四)Android百度公交开发—百度地图API之根据经纬度查询地址信息
- 调用百度地图API确定地址的经纬度,根据地址的经纬度查找中文地址
- 百度地图API之根据经纬度查询地址信息(Android)
- 百度地图API之根据经纬度查询地址信息(Android)
- 百度地图API之根据经纬度查询地址信息(Android)
- 百度地图5之根据经纬度查询地址信息(Android) .
- 并查集_ 模板
- 319Bulb Switcher
- CSS学习
- check_user.sh
- 使用Spring特性实现接口多实现类的动态调用
- android安卓根据地名查找经纬度(百度地图)
- bootstrap layer.open中end的使用
- 中文分词研究入门
- [IOS APP]尘埃落定-有声文学
- IntelliJ IDEA(2017)安装和破解
- android安卓中自定义的对象序列化问题
- 553Optimal Division
- 我的学习之路_第十四章_反射
- SpringBoot系列之五集成stymeleaf