当然,似乎这个也没有什么新意,小编也只是将官网的示例稍作整合。
PS:百度地图定位在线API<-点击即可进入查询
PS:百度地图普通地图API<-这出现在这里,主要是因为这里使用的地理编码和反地理编码是从里面取材的
嘻嘻,那么我们开始吧
定位原理我就不扯了,就是GPS,WIFI,基站等定位方式.具体优劣大家百度吧。嘻嘻... ...
需求:实现定位,获取地理位置信息
准备工作:
打开百度地图->进入地图API->创建应用->申请Key->下载SDK
IOS调用百度地图V2.3.0 <---如果是iOS开发,请移步到这个地址,当然了,如果key申请有误,也请移步到这里,因为申请Key步骤都一样。
当然,如果还没有好,那么移步到:百度介绍Android申请Key.
直接上代码可好?这样记录得更详细
package com.napoleonbai.baidu_map;
import java.util.HashMap;
import java.util.Map;
import com.baidu.mapapi.SDKInitializer;
import com.napoleonbai.baidu_map.LocationUtils.OnResultMapListener;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
/**
* 此类提供测试,没有其他作用
*
* @author NapoleonBai
*
*/
public class MainActivity extends Activity implements OnResultMapListener {
private LocationUtils mLocationUtils;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 初始化地图SDK<最好放置在Application中>
SDKInitializer.initialize(getApplicationContext());
// 创建定位管理信息对象
mLocationUtils = new LocationUtils(getApplicationContext());
setContentView(R.layout.activity_main);
// 开启定位
mLocationUtils.startLocation();
mLocationUtils.registerOnResult(this);
mLocationUtils.getLocation("广安", "邓小平故居");
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
// 存储地址信息
private Map<String, Object> resultMap = new HashMap<String, Object>();
@Override
public void onReverseGeoCodeResult(Map<String, Object> map) {
resultMap = map;
Log.i("data", "result====>" + resultMap.toString());
}
@Override
public void onGeoCodeResult(Map<String, Object> map) {
Log.i("data", "result====>" + map.toString());
}
}
这个类其实也没有什么作用,只是模拟的一个界面,值得注意的是这个
<span style="white-space:pre"> </span>// 初始化地图SDK<最好放置在Application中>
<span style="white-space:pre"> </span>SDKInitializer.initialize(getApplicationContext());
开发的时候只要把这句加载在Application中就可以了,就不用担心没有初始化了,在这里,主要是为了使用地理编码和反地理编码才使用的这个