文档章节

inearlyautumn-ditu001

i
 inearlyautumn
发布于 2016/04/24 14:26
字数 877
阅读 7
收藏 0
//--------------------------------MainActivity
package cn.itcast.baidumap;
import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.graphics.Color;
import android.os.Bundle;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;
import cn.itcast.baidumap.location.LocationDemo;
import cn.itcast.baidumap.overlay.Demo01_ShapeOption;
import cn.itcast.baidumap.overlay.Demo02_MarkerOption;
import cn.itcast.baidumap.route.Demo01_TransitRoute;
import cn.itcast.baidumap.route.Demo02_DrivingRoute;
import cn.itcast.baidumap.route.Demo03_WalkingRoute;
import cn.itcast.baidumap.search_other.Demo01_BusLineSearch;
import cn.itcast.baidumap.search_other.Demo02_GeoCoderDemo;
import cn.itcast.baidumap.search_other.Demo03_SuggestionSearch;
import cn.itcast.baidumap.search_other.Demo04_ShareUrlSearch;
import cn.itcast.baidumap.search_poi.Demo01_PoiSearchNearby;
import cn.itcast.baidumap.search_poi.Demo02_PoiSearchInCity;
import cn.itcast.baidumap.search_poi.Demo03_PoiSearchInBound;
import com.baidu.mapapi.SDKInitializer;
/**
 * 应用程序主界面,点击列表项进入各个演示的例子。
 */
public class MainActivity extends Activity{
    /** 地图功能演示例子 */
    private String[] mItems = new String[] {
            "地图HelloWorld",
            "地图操作",
            "地图图层演示",
            "覆盖物--几何图形",
            "覆盖物--地图标注(Marker)",
            "POI搜索--周边搜索",
            "POI搜索--全城搜索",
            "POI搜索--范围搜索",
            "路线规划--公交换乘",
            "路线规划--驾车路线",
            "路线规划--步行路线",
            "定位功能",
            "其它搜索--公交路线搜索",
            "其它搜索--地址与经纬度转换",
            "其它搜索--联想词搜索",
            "其它搜索--短串搜索(Url)"
            
    };
    /** Activity界面 */
 private Class[] mCls= new Class[] {
            HelloMapActivity.class,
            MapControlActivity.class,
            MapLayerActivity.class,
            Demo01_ShapeOption.class,
            Demo02_MarkerOption.class,
            Demo01_PoiSearchNearby.class,
            Demo02_PoiSearchInCity.class,
            Demo03_PoiSearchInBound.class,
            Demo01_TransitRoute.class,
            Demo02_DrivingRoute.class,
            Demo03_WalkingRoute.class,
            LocationDemo.class,
            Demo01_BusLineSearch.class,
            Demo02_GeoCoderDemo.class,
            Demo03_SuggestionSearch.class,
            Demo04_ShareUrlSearch.class
            
    };
    /** 列表控件 */
    private ListView mListView;
    
    /** 此控件用来提示出错信息  */
    private TextView mTVInfo;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        registerMapErrorRecevier();
        setContentView(R.layout.activity_main);
        mTVInfo = (TextView) findViewById(R.id.tv_info);
        
        initListView();
    }
    private void initListView() {
     final int listViewHeight = getResources().getDimensionPixelSize(R.dimen.list_height);
        mListView = (ListView) findViewById(R.id.lv_main);
        // 列表适配器:ArrayAdapter相对于BaseAdapter,它可以少重写一些方法
        mListView.setAdapter(new ArrayAdapter<String>(this, 0, mItems) {
            @Override
            public View getView(int position, View convertView, ViewGroup parent) {
                TextView tvText = null;
                if (convertView == null) {
                    convertView = tvText = new TextView(getBaseContext());
                    tvText.setTextSize(16);
                    tvText.setTextColor(Color.BLACK);
                    tvText.setMinHeight(listViewHeight); // 列表项的最小高度
                    tvText.setGravity(Gravity.CENTER_VERTICAL);
                    tvText.setPadding(10, 0, 0, 0);
                } else {
                    tvText = (TextView) convertView;
                }
                // 获取列表项显示的数据
                String text = getItem(position);
                tvText.setText(text);
                return convertView;
            }
        });
        
        
        // 列表项点击事件
        mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) {
                Intent intent = new Intent(getBaseContext(), mCls[position]);
                // 传递标题到子界面显示到标题栏上
                intent.putExtra("title", mItems[position]); 
                startActivity(intent);
            }
        });
    }
    
    private BroadcastReceiver mReceiver = new BroadcastReceiver() {
     public void onReceive(Context context, Intent intent) {
      if (intent.getAction().equals(SDKInitializer.SDK_BROADTCAST_ACTION_STRING_PERMISSION_CHECK_ERROR)) {
       mTVInfo.setVisibility(View.VISIBLE);
       mTVInfo.setText("appkey验证出错");
       return;
      }
      
      if (intent.getAction().equals(SDKInitializer.SDK_BROADCAST_ACTION_STRING_NETWORK_ERROR)) {
       mTVInfo.setVisibility(View.VISIBLE);
       mTVInfo.setText("网络出错");
       return;
      }
      
     };
    };
    
    /**
     * 监听地图appkey验证出错的广播
     */
    private void registerMapErrorRecevier() {
     IntentFilter filter = new IntentFilter();
     // appkey验证出错
     filter.addAction(SDKInitializer.SDK_BROADTCAST_ACTION_STRING_PERMISSION_CHECK_ERROR);
     // 网络出错
     filter.addAction(SDKInitializer.SDK_BROADCAST_ACTION_STRING_NETWORK_ERROR);
  registerReceiver(mReceiver, filter );
    }
    
    @Override
    protected void onDestroy() {
     super.onDestroy();
     unregisterReceiver(mReceiver);
    }
}
 //----------------------------------LocationDemo
 package cn.itcast.baidumap.location;
import com.baidu.location.BDLocation;
import com.baidu.location.BDLocationListener;
import com.baidu.location.LocationClient;
import com.baidu.location.LocationClientOption;
import com.baidu.location.LocationClientOption.LocationMode;
import com.baidu.mapapi.map.MyLocationConfiguration;
import com.baidu.mapapi.map.MyLocationData;
import android.os.Bundle;
import cn.itcast.baidumap.base.BaseActivity;
/**
 * 百度地图定位功能
 * 
 * 实现步骤:
 * 1. 导入jar和so,添加权限,声明百度定位服务
 * 2. 初始化定位对象LocationClient;
 * 3. 注册定位监听器;
 * 4. 设置定位参数,开始定位,界面退出时停止定位;
 * 5. 在定位监听器里获取定位结果,并toast
 * 6. 打开定位图层,设置MyLocationConfiguration,使用MyLocationData在地图上显示当前定位位置;
 * 
 */
public class LocationDemo extends BaseActivity {
 
 private LocationClient mLocationClient;
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  
  initLocation();
  beginLocation();
 }
 private void beginLocation() {
  // 设置定位的参数
  LocationClientOption option = new LocationClientOption();
  option.setCoorType("bd09ll"); // 设置坐标系
  option.setLocationMode(LocationMode.Hight_Accuracy); // 定位模式,精度最高
  option.setScanSpan(5000);  // 设置定位刷新频率:5s刷新一次位置
  option.setIsNeedAddress(true); // 是否返回详情的地址信息
  mLocationClient.setLocOption(option);
  mLocationClient.start(); // 开始定位
 }
 private void initLocation() {
  // 打开定位图层
  mBaiduMap.setMyLocationEnabled(true);
  mBaiduMap.setMyLocationConfigeration(new MyLocationConfiguration(
    com.baidu.mapapi.map.MyLocationConfiguration.LocationMode.FOLLOWING, 
    true,// 是否显示方向
    null)); // 使用默认的显示图标
  
  
  // 定位对象 
  mLocationClient = new LocationClient(this);
  mLocationClient.registerLocationListener(new BDLocationListener() {
   
   @Override // 接收定位结果
   public void onReceiveLocation(BDLocation location) {
    
    if (location == null) {
     return;
    }
    
    double lat = location.getLatitude();
    double lon = location.getLongitude();
    String detailAddress = location.getAddrStr();// 详情的地址信息
    String city = location.getCity();
    String cityCode = location.getCityCode();
    
    String info = city + "   " + cityCode 
      + lat + "  " + lon + "   " + detailAddress;
    showToast(info);
    
    MyLocationData data = new MyLocationData.Builder()
     .latitude(lat)
     .longitude(lat)
     .accuracy(location.getRadius()) // 显示的精度
     .build();
    // 设置定位到坐标数据
    mBaiduMap.setMyLocationData(data);
   }
  });
 }
 
 @Override
 protected void onDestroy() {
  super.onDestroy();
  // 停止定位
  mLocationClient.stop();
 }
}
 //----------------------------------------

© 著作权归作者所有

i
粉丝 0
博文 20
码字总数 14963
作品 0
广州
私信 提问

暂无文章

rime设置为默认简体

转载 https://github.com/ModerRAS/ModerRAS.github.io/blob/master/_posts/2018-11-07-rime%E8%AE%BE%E7%BD%AE%E4%B8%BA%E9%BB%98%E8%AE%A4%E7%AE%80%E4%BD%93.md 写在开始 我的Arch Linux上......

zhenruyan
今天
4
0
简述TCP的流量控制与拥塞控制

1. TCP流量控制 流量控制就是让发送方的发送速率不要太快,要让接收方来的及接收。 原理是通过确认报文中窗口字段来控制发送方的发送速率,发送方的发送窗口大小不能超过接收方给出窗口大小。...

鏡花水月
今天
8
0
OSChina 周日乱弹 —— 别问,问就是没空

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @tom_tdhzz :#今日歌曲推荐# 分享容祖儿/彭羚的单曲《心淡》: 《心淡》- 容祖儿/彭羚 手机党少年们想听歌,请使劲儿戳(这里) @wqp0010 :周...

小小编辑
今天
874
10
golang微服务框架go-micro 入门笔记2.1 micro工具之micro api

micro api micro 功能非常强大,本文将详细阐述micro api 命令行的功能 重要的事情说3次 本文全部代码https://idea.techidea8.com/open/idea.shtml?id=6 本文全部代码https://idea.techidea8....

非正式解决方案
今天
5
0
Spring Context 你真的懂了吗

今天介绍一下大家常见的一个单词 context 应该怎么去理解,正确的理解它有助于我们学习 spring 以及计算机系统中的其他知识。 1. context 是什么 我们经常在编程中见到 context 这个单词,当...

Java知其所以然
昨天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部