高级部分(百度地图一)

布局文件:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
    
    <EditText 
        android:id="@+id/city"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>
    
    <EditText 
        android:id="@+id/address"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>
    
    <Button 
        android:id="@+id/btn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="进行编码"/>


    <com.baidu.mapapi.map.MapView
        android:id="@+id/mview"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>


</LinearLayout>


=======================================================================

权限添加:

   <uses-permission android:name="android.permission.GET_ACCOUNTS" />
    <uses-permission android:name="android.permission.USE_CREDENTIALS" />
    <uses-permission android:name="android.permission.MANAGE_ACCOUNTS" />
    <uses-permission android:name="android.permission.AUTHENTICATE_ACCOUNTS" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" />
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.BROADCAST_STICKY" />
    <uses-permission android:name="android.permission.WRITE_SETTINGS" />

========================================================================

添加配置:

<meta-data
            android:name="com.baidu.lbsapi.API_KEY"
            android:value="fPaxxVR9g67Gb6inUo7haUms" />

============================================================================

逻辑实现:

package com.qianfeng.mytext;


import com.baidu.mapapi.SDKInitializer;
import com.baidu.mapapi.map.BaiduMap;
import com.baidu.mapapi.map.BitmapDescriptorFactory;
import com.baidu.mapapi.map.InfoWindow;
import com.baidu.mapapi.map.MapStatusUpdateFactory;
import com.baidu.mapapi.map.MapView;
import com.baidu.mapapi.map.Marker;
import com.baidu.mapapi.map.MarkerOptions;
import com.baidu.mapapi.map.BaiduMap.OnMarkerClickListener;
import com.baidu.mapapi.map.BaiduMap.OnMarkerDragListener;
import com.baidu.mapapi.model.LatLng;
import com.baidu.mapapi.search.geocode.GeoCodeOption;
import com.baidu.mapapi.search.geocode.GeoCodeResult;
import com.baidu.mapapi.search.geocode.GeoCoder;
import com.baidu.mapapi.search.geocode.OnGetGeoCoderResultListener;
import com.baidu.mapapi.search.geocode.ReverseGeoCodeResult;
import android.os.Bundle;
import android.app.Activity;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;


public class MainActivity extends Activity {
private MapView mView;
private BaiduMap bmap;
private EditText city,address;
private Button btn;
//地理编码对象
private GeoCoder coder;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//在添加布局前初始化百度SDK
SDKInitializer.initialize(getApplicationContext());
setContentView(R.layout.activity_main);
city=(EditText) findViewById(R.id.city);
address=(EditText) findViewById(R.id.address);
btn=(Button) findViewById(R.id.btn);
mView=(MapView) findViewById(R.id.mview);
//获得地图对象
bmap=mView.getMap();
//113.310525,23.148497(广州动物园)
//1.设置地图的标注
MarkerOptions marker=new MarkerOptions();
marker.icon(BitmapDescriptorFactory.fromResource(R.drawable.ic_launcher));//设置标注的图标
final LatLng pos = new LatLng(23.148497, 113.310525);//设置经纬度
marker.position(pos);//设置标注的地方
marker.title("广州动物园");//设置该地点的名称
//设置标注可被拖拽
marker.draggable(true);
//将标注添加到地图中
bmap.addOverlay(marker);
bmap.setOnMarkerClickListener(new OnMarkerClickListener() {

@Override
public boolean onMarkerClick(Marker arg0) {
// TODO Auto-generated method stub
//当点击标注点的时候弹出  弹出窗图层(InfoWindow)
//获取被点击的标注点的相关信息(此处用获取文本信息做代表)
String title=arg0.getTitle();
Button btn=new Button(MainActivity.this);
btn.setText(title);
//参数1:InfoWindow的视图   2:InfoWindow显示的位置   3:InfoWindow相对于自身的显示位置在Y轴上的偏移量
InfoWindow window=new InfoWindow(btn, pos, -50);
bmap.showInfoWindow(window);
return false;
}
});

//监听标志点被拖拽
bmap.setOnMarkerDragListener(new OnMarkerDragListener() {
//标注点开始被拖拽
@Override
public void onMarkerDragStart(Marker arg0) {
// TODO Auto-generated method stub
Log.v("TAG", "开始被拖拽");
}
//标注点结束被拖拽
@Override
public void onMarkerDragEnd(Marker arg0) {
// TODO Auto-generated method stub
Log.v("TAG", "结束被拖拽");
}
//标注点正在被拖拽
@Override
public void onMarkerDrag(Marker arg0) {
// TODO Auto-generated method stub
Log.v("TAG", "正在被拖拽");
}
});
//==========================================================
//修改地图的默认中心
bmap.setMapStatus(MapStatusUpdateFactory.newLatLng(pos));

//==============================================================================
//正向地理编码
//创建地理编码器对象
coder=GeoCoder.newInstance();
btn.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
String sCity=city.getText().toString().trim();
String sAddress=address.getText().toString().trim();
//创建封装进行正向地理编码参数的对象
GeoCodeOption option=new GeoCodeOption();
option.city(sCity);
option.address(sAddress);
//发起正向地理编码
coder.geocode(option);
}
});
//地理编码监听结果
coder.setOnGetGeoCodeResultListener(new OnGetGeoCoderResultListener() {
//获取反向地理编码的结果
@Override
public void onGetReverseGeoCodeResult(ReverseGeoCodeResult arg0) {
// TODO Auto-generated method stub
Log.v("TAG", "获取到--------反向 -------地理编码的结果");
}
//获取正向地理编码的结果
@Override
public void onGetGeoCodeResult(GeoCodeResult arg0) {
// TODO Auto-generated method stub
Log.v("TAG", "获取到 -----正向 -------地理编码的结果");
LatLng pos=arg0.getLocation();
Log.v("TAG", "经度值:" + pos.longitude + "    纬度值:" + pos.latitude);
bmap.clear();//清空百度地图上的图层
MarkerOptions opt=new MarkerOptions();
opt.icon(BitmapDescriptorFactory.fromResource(R.drawable.ic_launcher));
LatLng pos2 = new LatLng(pos.latitude, pos.longitude);
opt.position(pos2);
bmap.addOverlay(opt);
bmap.setMapStatus(MapStatusUpdateFactory.newLatLng(pos2));
}
});
}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 离线调用百度地图API意味着在没有网络连接的情况下使用百度地图的功能。要实现这一功能,可以按照以下步骤进行操作。 1. 下载地图数据:首先需要下载百度地图的离线数据,包括地图瓦片数据和地图标记数据。这些数据可以在百度地图官方网站上获取。 2. 存储地图数据:将下载的地图数据存储在本地设备上,可以使用文件系统或数据库进行存储。确保存储路径易于访问,并且可以根据需要进行更新和删除。 3. 解密地图数据:如果下载的地图数据进行了加密,需要使用相应的解密算法对数据进行解密,以便在离线模式下正确显示地图和相关信息。 4. 使用离线地图:在应用程序中,通过调用本地存储的地图数据和相关的API方法来显示离线地图。可以使用地图瓦片数据来加载地图图层,使用地图标记数据来显示地点或标记。 需要注意的是,虽然离线调用百度地图API可以在没有网络连接的情况下使用地图功能,但是某些高级功能(如实时导航、交通态势等)可能需要实时的网络连接才能正常工作。 离线调用百度地图API可以帮助在没有网络连接的情况下仍然能够使用地图功能,为用户提供便利。 ### 回答2: 离线调用百度地图API是指在没有网络连接的情况下使用百度地图的相关功能。通常情况下,使用百度地图API需要具备网络连接,因为通过网络可以获取到实时的地图数据和相关服务。 但是,有时候我们可能需要在没有网络连接的情况下使用地图服务,比如在某些偏远地区、地下室或者在没有移动数据流量的情况下。为了解决这个问题,可以通过下载百度地图的离线地图数据,然后在离线状态下使用这些数据。 首先,我们需要在有网络连接的情况下,通过百度地图API下载所需要的离线地图数据。下载好的地图数据可以包括地图的底图、瓦片数据、POI(兴趣点)数据等。 然后,在离线状态下,我们可以使用这些离线地图数据进行地图展示、定位、搜索等操作。通过离线地图数据,我们可以在没有网络连接的情况下,利用本地的数据来进行相应的地图功能操作。 不过,需要注意的是,离线地图数据是有限的,只包括下载时候所选择的区域范围内的数据。如果需要使用更多地区的地图数据,就需要事先下载更多的离线地图数据。 总的来说,离线调用百度地图API需要先在有网络连接的情况下下载所需要的离线地图数据,然后在离线状态下使用这些数据进行地图功能操作。这样可以在没有网络连接的情况下依然能够使用百度地图的相关服务。 ### 回答3: 离线调用百度地图API是指在没有网络连接的情况下,仍然可以使用百度地图的功能和数据。 一种常见的离线调用方法是使用百度地图SDK。首先,我们需要下载并安装百度地图SDK到我们的应用程序中。然后,我们可以使用SDK提供的接口来访问离线地图数据和功能。 百度地图SDK通常提供一些离线地图数据的下载功能,我们可以在有网络连接的情况下将需要的地图数据下载到本地设备中,以便在没有网络连接时使用。下载的地图数据通常包含了地图的切片、道路网络和POI等信息。我们可以根据需要选择下载的城市或地区的地图数据。 当我们的应用程序进入离线模式时,我们可以使用百度地图SDK提供的接口来加载已下载的离线地图数据。通过地图的缓存功能,我们可以加载并显示离线地图数据,包括地图切片、标记点、路线规划等功能,而无需网络连接。 需要注意的是,离线调用百度地图API的功能和数据是有限的。离线地图数据通常是提前下载的,因此可能不包含最新的地图信息和实时交通情况。某些功能,如实时路况、导航和周边搜索等,可能无法在离线模式下使用。 总结起来,离线调用百度地图API是通过下载并加载离线地图数据来实现的。它可以让我们在没有网络连接的情况下继续使用百度地图部分功能和数据,提供便利的地图服务。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值