百度地图基本使用

package com.qg.lizhanqi.baidumapdemo;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

import com.baidu.location.BDLocation;
import com.baidu.location.BDLocationListener;
import com.baidu.location.LocationClient;
import com.baidu.location.LocationClientOption;
import com.baidu.mapapi.SDKInitializer;
import com.baidu.mapapi.map.BaiduMap;
import com.baidu.mapapi.map.BitmapDescriptor;
import com.baidu.mapapi.map.BitmapDescriptorFactory;
import com.baidu.mapapi.map.LogoPosition;
import com.baidu.mapapi.map.MapStatusUpdate;
import com.baidu.mapapi.map.MapStatusUpdateFactory;
import com.baidu.mapapi.map.MapView;
import com.baidu.mapapi.map.MyLocationConfiguration;
import com.baidu.mapapi.map.MyLocationData;
import com.baidu.mapapi.model.LatLng;

public class MainActivity extends AppCompatActivity implements View.OnClickListener {
    private MapView mMapView;
    private MapView bmapView;
    private Button btn_location;
    private Button btn_traffic;
    private Button btn_moon;
    private Button btn_normal;
    private Button btn_radar;
    private Button btn_navigation;
    private BaiduMap mBaiduMap;
    private Button btn_gap;
    private Button btn_Heat;
    boolean isFirstIn = true;
    private LocationClient mLocationClient;
    private LatLng latLng;//经纬度数据
    private BitmapDescriptor mIconLocation;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //在使用SDK各组件之前初始化context信息,传入ApplicationContext
        //注意该方法要再setContentView方法之前实现
        SDKInitializer.initialize(getApplicationContext());
        setContentView(R.layout.activity_main);
        initView();
        //更改百度logo的位置
        mMapView.setLogoPosition(LogoPosition.logoPostionRightBottom);
        MapStatusUpdate msu = MapStatusUpdateFactory.zoomTo(15.0f);
        mBaiduMap.setMapStatus(msu);
        //定位到当前
        location();
    }
    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.btn_location://定位
                MapStatusUpdate msu = MapStatusUpdateFactory.newLatLng(latLng);//更新我的状态位置数据
                mBaiduMap.animateMapStatus(msu);//动画效果的回到当前位置,避免了效果过硬的看起来不太友好
                break;
            case R.id.btn_radar://雷达
                break;
            case R.id.btn_navigation://导航
                break;
            case R.id.btn_traffic:
                //开启实时交通图
                mBaiduMap.setTrafficEnabled(true);
                Toast.makeText(MainActivity.this, "打开了实时交通图", Toast.LENGTH_SHORT).show();
                break;
            case R.id.btn_moon:
                //卫星地图
                mBaiduMap.setMapType(BaiduMap.MAP_TYPE_SATELLITE);
                Toast.makeText(MainActivity.this, "打开了卫星地图", Toast.LENGTH_SHORT).show();
                break;
            case R.id.btn_normal:
                //普通地图
                mBaiduMap.setMapType(BaiduMap.MAP_TYPE_NORMAL);
                Toast.makeText(MainActivity.this, "打开了普通地图", Toast.LENGTH_SHORT).show();
                break;
            case R.id.btn_gap:
                //空白地图, 基础地图瓦片将不会被渲染。在地图类型中设置为NONE,将不会使用流量下
                // 载基础地图瓦片图层。使用场景:与瓦片图层一起使用,节省流量,提升自定义瓦片图下载速度。
                mBaiduMap.setMapType(BaiduMap.MAP_TYPE_NONE);//空白地图指的是只显示道路而不显示其他任何标志与建筑物
                Toast.makeText(MainActivity.this, "打开了空白地图", Toast.LENGTH_SHORT).show();
                break;
            case R.id.btn_Heat:
                if (mBaiduMap.isBaiduHeatMapEnabled()) {//如果打开就关闭,如果关闭就打开
                    btn_Heat.setText("打开热力图");
                    mBaiduMap.setBaiduHeatMapEnabled(false);//关闭热力图
                    Toast.makeText(MainActivity.this, "关闭热力图", Toast.LENGTH_SHORT).show();
                } else {
                    //开启热力图
                    mBaiduMap.setBaiduHeatMapEnabled(true);
                    btn_Heat.setText("关闭热力图");
                    Toast.makeText(MainActivity.this, "打开热力图", Toast.LENGTH_SHORT).show();
                }
                break;
        }
    }
    private void location() {
        mLocationClient = new LocationClient(this);//创建定位端
        MyLocationListener myLocationListener = new MyLocationListener();//创建实现BDLocationListener的类
        //定位端的监听器
        mLocationClient.registerLocationListener(myLocationListener);
        //通过LocationClientOption对象给mLocationClient定位设置重要设置
        LocationClientOption mLocationClientOption = new LocationClientOption();
        mLocationClientOption.setCoorType("bd09ll");//坐标类型
        mLocationClientOption.setIsNeedAddress(true);//返回当前的位置
        mLocationClientOption.setOpenGps(true);//打开GPS
        mLocationClientOption.setScanSpan(1000);//每隔多少秒定位一次
        mLocationClient.setLocOption(mLocationClientOption);
    }
    //定位成功的回调
    private class MyLocationListener implements BDLocationListener {
        @Override
        public void onReceiveLocation(BDLocation bdLocation) {
            MyLocationData locData = new MyLocationData.Builder()
                    .accuracy(bdLocation.getRadius())//精度
                    .direction((float) bdLocation.getLatitude())//方向
                    .longitude(bdLocation.getLongitude())
                    .build();//创建当前位置数据
            mBaiduMap.setMyLocationData(locData);//设置当前位置
            // 初始化图标
            BitmapDescriptor mCurrentMarker = BitmapDescriptorFactory.fromResource(R.drawable.locationicon);
            // 设置定位图层的配置(定位模式,是否允许方向信息,用户自定义定位图标)
            //MyLocationConfiguration.LocationMode.COMPASS//罗盘模式,FOLLOWING跟随模式
            MyLocationConfiguration config = new MyLocationConfiguration(MyLocationConfiguration.LocationMode.NORMAL, true, mCurrentMarker);
            mBaiduMap.setMyLocationConfigeration(config);
            //获得经纬度坐标
            latLng = new LatLng(bdLocation.getLatitude(), bdLocation.getLongitude());
            if (isFirstIn) {//用户第一次进来后定位到当前,因为会实时定位不需要每次定位都设置到当前位置,否则的话用户拖拽到其他位置还会被拉回来,所以又一次就行了
                MapStatusUpdate msu = MapStatusUpdateFactory.newLatLng(latLng);//更新我的状态位置数据
                mBaiduMap.animateMapStatus(msu);//动画效果的回到当前位置,避免了效果过硬的看起来不太友好
                Toast.makeText(MainActivity.this, "你当前在:" + bdLocation.getAddrStr(), Toast.LENGTH_SHORT).show();
                isFirstIn = false;
            }
        }
    }
    @Override
    protected void onStart() {
        super.onStart();
        // 开启定位图层
        mBaiduMap.setMyLocationEnabled(true);
        if (!mLocationClient.isStarted()) {
            mLocationClient.start();
        }
    }
    @Override
    protected void onDestroy() {
        super.onDestroy();
        //在activity执行onDestroy时执行mMapView.onDestroy(),实现地图生命周期管理
        mMapView.onDestroy();
    }
    @Override
    protected void onResume() {
        super.onResume();
        //在activity执行onResume时执行mMapView. onResume (),实现地图生命周期管理
        mMapView.onResume();
    }
    @Override
    protected void onPause() {
        super.onPause();
        //在activity执行onPause时执行mMapView. onPause (),实现地图生命周期管理
        mMapView.onPause();
        if (mLocationClient.isStarted()) {
            // 当不需要定位图层时关闭定位图层
            mBaiduMap.setMyLocationEnabled(false);
        }
    }
    private void initView() {
        //获取地图控件引用
        mMapView = (MapView) findViewById(R.id.bmapView);
        mBaiduMap = mMapView.getMap();
        btn_location = (Button) findViewById(R.id.btn_location);
        btn_traffic = (Button) findViewById(R.id.btn_traffic);
        btn_moon = (Button) findViewById(R.id.btn_moon);
        btn_normal = (Button) findViewById(R.id.btn_normal);
        btn_radar = (Button) findViewById(R.id.btn_radar);
        btn_navigation = (Button) findViewById(R.id.btn_navigation);
        btn_location.setOnClickListener(this);
        btn_traffic.setOnClickListener(this);
        btn_moon.setOnClickListener(this);
        btn_normal.setOnClickListener(this);
        btn_radar.setOnClickListener(this);
        btn_navigation.setOnClickListener(this);
        btn_gap = (Button) findViewById(R.id.btn_gap);
        btn_gap.setOnClickListener(this);
        btn_Heat = (Button) findViewById(R.id.btn_Heat);
        btn_Heat.setOnClickListener(this);
    }
}
时间: 2024-12-13 01:30:03

百度地图基本使用的相关文章

百度地图API实现批量地址解析

1.前言 写这篇文章的原因是最近做一个GIS项目在网上爬取了一些数据,无奈只有地址的文字信息没有坐标信息,如何把信息显现在地图上呢?很纠结啊,查看了一下百度地图API惊奇的发现百度提供了地址解析的API,然后查看了他的Demo后豁然开朗,所以动手将自己的文字信息数据进行解析坐标信息.下面开始讲解. 2.方案 (1)自己数据库中的数据 (2)百度地图API Demo <!DOCTYPE html> <html> <head> <meta http-equiv=&qu

js中实现高德地图坐标经纬度转百度地图坐标

1 function tobdMap(x, y) { 2 var x_pi = 3.14159265358979324 * 3000.0 / 180.0; 3 var z = Math.sqrt(x * x + y * y) + 0.00002 * Math.sin(y * x_pi); 4 var theta = Math.atan2(y, x) + 0.000003 * Math.cos(x * x_pi); 5 var bd_lon = z * Math.cos(theta) + 0.00

Vue2.0与 [百度地图] 结合使用———vue+webpack+axios+百度地图实现组件之间的通信

Vue2.0与 [百度地图] 结合使用: 1.vue init webpack-simple vue-baidu-map 2.下载axios cnpm install axios; 3.在main.js中引入axios,并使用 import axios from 'axios' /* 把axios对象挂到Vue实例上面,其他组件在使用axios的时候直接 this.$http就可以了 */ Vue.prototype.$http = axios; 4.引入百度地图的js秘钥--->最好在inde

百度地图标注图标太小

1.1.1  现象 百度地图中,定位点的标注示意图标太小: 实际期望的图标是这样的: 1.1.2  原因 检查了很久,以为是打开地图时的设置问题,后来慢慢查找地图上的元素定位,终于发现原来这个图标大小是被CSS控制的,在地图元素的内部可以找到如下代码: 这个img元素就是用来显示定位图标的,可以修改这个元素的CSS属性来改变大小. 1.1.3  解决 如果要使用默认大小,则需要配置如下CSS: img {     max-width: inherit; } 原来图标变小,是因为其它CSS配置导致

Android 百度地图开发(一)--- 申请API Key和在项目中显示百度地图

标签: Android百度地图API Key  分类: Android 百度地图开发(2)  最近自己想研究下地图,本来想研究google Map,但是申请API key比较坑爹,于是从百度地图入手,其实他们的用法都差不多,本篇文章就带领大家在自己的Android项目中加入百度地图的功能,接下来我会写一系列关于百度地图的文章,欢迎大家到时候关注!   一 申请API key 在使用百度地图之前,我们必须去申请一个百度地图的API key,申请地址http://lbsyun.baidu.com/a

HTML5结合百度地图API创建地图应用

具体的百度地图API的使用方法查看百度地图API里的DEMO <style> #div1{ width:400px; height:400px; border:1px #000 solid;} </style> <script src="http://api.map.baidu.com/api?v=1.3"></script> <script> window.onload = function(){ var oInput =

百度地图SDK开发过程中遇到的问题解析

问题1. 在运行显示百度地图是出现如下错误,导致程序停止: 01-30 06:49:49.935: E/AndroidRuntime(9132): Caused by: java.lang.UnsatisfiedLinkError: Couldn't load BaiduMapSDK_v3_2_0_15 from loader dalvik.system.PathClassLoader[dexPath=/data/app/com.example.getsmsinfo-1.apk,libraryP

Android如何申请百度地图key

在开发过程中,有时候会使用到地图定位之类的功能,在使用百度地图之前,我们先要申请一个百度地图的key方才能使用,接下来,一步步教给大家如何去申请一个百度地图key 登录你的百度帐号,之后搜索---"百度地图api",如下图所示: 选择第一个,点击进去之后,往下拉,如图所示: 点击申请密钥,如图所示: 接下来如图所示: 接下去找Android SDK安全码,如图所示: 之后回到页面,将复制的东西拷贝到安全码那,之后写一个英文分号;   ,之后加上项目包名,就好,如下图: 点击提交之后,

Android百度地图开发(一)之初体验

转载请注明出处:http://blog.csdn.net/crazy1235/article/details/42614603 做关于位置或者定位的app的时候免不了使用地图功能,本人最近由于项目的需求需要使用百度地图的一些功能,所以这几天研究了一下,现写一下blog记录一下,欢迎大家评论指正! 一.申请AK(API Key) 要想使用百度地图sdk,就必须申请一个百度地图的api key.申请流程挺简单的. 首先注册成为百度的开发者,然后打开http://lbsyun.baidu.com/ap

Android应用中使用百度地图API定位自己的位置(二)

官方文档:http://developer.baidu.com/map/sdkandev-6.htm#.E7.AE.80.E4.BB.8B3 百度地图SDK为开发者们提供了如下类型的地图覆盖物: 我的位置图层(MyLocationOverlay):用于显示用户当前位置的图层(支持自定义位置图标): Poi搜索结果图层(PoiOverlay):用于显示兴趣点搜索结果的图层: 路线图层(RouteOverlay):公交.步行和驾车线路图层,将公交.步行和驾车出行方案的路线及关键点显示在地图上(起.终