调用百度地图
今天学习了百度的一些基本的用法,感觉百度给的东西对开发者的使用非常方便。
包括百度地图的调用,在地图中添加图片,位置的移动,以及地图位置的发送
首先,前期准备,
需要如上的准备,可以去百度lbsyun.baidu.com自己下载,百度也有提供的案例供参考
直接上代码:
DemoApplication
public class DemoApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
// 在使用 SDK 各组间之前初始化 context 信息,传入 ApplicationContext
SDKInitializer.initialize(this);
}
}
MainActivity
public class MainActivity extends Activity {
LocationClient lc;
MapView mapView;
BaiduMap baiduMap;
Button btnSend;
ImageView imageview;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.show_map);
btnSend = (Button) findViewById(R.id.button1);
imageview = (ImageView) findViewById(R.id.imageView1);
mapView = (MapView) findViewById(R.id.baidu_map);
baiduMap = mapView.getMap();
MyListener ml = new MyListener();
lc = new LocationClient(this);
lc.registerLocationListener(ml);
LocationClientOption option = new LocationClientOption();
option.setOpenGps(true);
option.setCoorType("bd09ll");
option.setScanSpan(3000);
lc.start();
baiduMap.setOnMapClickListener(new OnMapClickListener() {
@Override
public boolean onMapPoiClick(MapPoi arg0) {
// TODO Auto-generated method stub
return false;
}
@Override
public void onMapClick(LatLng click) {
// TODO Auto-generated method stub
//单击的位置添加图片
baiduMap.clear();
MarkerOptions mos = new MarkerOptions();
mos.position(click);
mos.icon(BitmapDescriptorFactory.fromResource(R.drawable.tubiao1));
baiduMap.addOverlay(mos);
}
});
//对按钮做出响应
btnSend.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
baiduMap.snapshot(new SnapshotReadyCallback() {
@Override
public void onSnapshotReady(Bitmap bitmap) {
// TODO Auto-generated method stub
imageview.setImageBitmap(bitmap);
}
});
}
});
}
class MyListener implements BDLocationListener {
@Override
public void onReceiveLocation(BDLocation bdLocation) {
// TODO Auto-generated method stub
//获取纬度
double latitude = bdLocation.getLatitude();
//获取经度
double longitude = bdLocation.getLongitude();
for(int i =1;i<=100;i++){
System.out.println("纬度" + latitude + "经度" + longitude);
}
//虚拟机上边得不到真实的数据
//移动地图中心点
LatLng currentPosition = new LatLng(latitude, longitude);
MapStatusUpdate mapStatusUpdate = MapStatusUpdateFactory.newLatLngZoom(currentPosition, 17);
baiduMap.animateMapStatus(mapStatusUpdate);
//在地图上显示图片
MarkerOptions mo = new MarkerOptions();
mo.position(currentPosition);
//将图片加入到地图中
mo.icon(BitmapDescriptorFactory.fromResource(R.drawable.tubiao1));
baiduMap.addOverlay(mo);
}
}
}
布局设置:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<ImageView
android:id="@+id/imageView1"
android:layout_width="fill_parent"
android:layout_height="200dp"
android:src="@android:drawable/btn_dialog" />
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="发送地图" />
<com.baidu.mapapi.map.MapView
android:id="@+id/baidu_map"
android:layout_width="wrap_content"
android:layout_height="wrap_content"></com.baidu.mapapi.map.MapView>
</LinearLayout>
AndroidMainfest.xml,这里边的东西很重要,还需要自己申请一个key,
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.baidu"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="14"
android:targetSdkVersion="14" />
<!--
权限不能忘了加进去 -->
<uses-permission android:name="android.permission.BAIDU_LOCATION_SERVICE" >
</uses-permission>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" >
</uses-permission>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" >
</uses-permission>
<uses-permission android:name="android.permission.INTERNET" >
</uses-permission>
<uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION" >
</uses-permission>
<!-- <uses-permission android:name="android.permission.WRITE_APN_SETTINGS"></uses-permission> -->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" >
</uses-permission>
<uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" />
<uses-permission android:name="android.permission.WAKE_LOCK" >
</uses-permission>
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_GPS" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.CALL_PHONE" />
<uses-permission android:name="android.permission.READ_SMS" />
<uses-permission android:name="android.permission.SEND_SMS" />
<!-- SDK1.5需要android.permission.GET_TASKS权限判断本程序是否为当前运行的应用? -->
<uses-permission android:name="android.permission.GET_TASKS" />
<uses-permission android:name="android.permission.CAMERA" >
</uses-permission>
<uses-permission android:name="android.permission.RECORD_AUDIO" >
</uses-permission>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" >
</uses-permission>
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.BROADCAST_STICKY" />
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
<!-- 来电消音 -->
<uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS" >
</uses-permission>
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" android:name="DemoApplication">
<activity
android:name=".MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<!--
这个不要忘记添加进去,
-->
<service
android:name="com.baidu.location.f"
android:enabled="true"
android:process=":remote" >
</service>
<!-- 这里你需要上百度http://lbsyun.baidu.com/apiconsole/key/create,自己注册申请一个key,使用这里边的
不可以 -->
<meta-data
android:name="com.baidu.lbsapi.API_KEY"
android:value="yhW6tTFDgyddv40aoOsMKSTh" />
</application>
</manifest>
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理