热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

百度地图开发入门【不同图层及覆盖物】

上次我们一起完成了helloMap这个最基本的地图,这次我们来体验下不同视觉地图的魅力1.了解地图的最基本管理类BaiduMap方法很简单就是mapvi

上次我们一起完成了helloMap这个最基本的地图,这次我们来体验下不同视觉地图的魅力

1.了解地图的最基本管理类BaiduMap 

方法很简单就是
mapview.getMap();
然后我们来看一下里面的方法
官方文档这么说来着
void addHeatMap(HeatMap heatmap)
添加热力图
Overlay addOverlay(OverlayOptions options)
向地图添加一个 Overlay
void animateMapStatus(MapStatusUpdate update)
以动画方式更新地图状态,动画耗时 300 ms
void animateMapStatus(MapStatusUpdate update, int durationMs)
以动画方式更新地图状态
void clear()
清空地图所有的 Overlay 覆盖物以及 InfoWindow
MyLocationConfiguration getLocationConfigeration()
获取定位图层配置信息
MyLocationData getLocationData()
获取定位数据
MapStatus getMapStatus()
获取地图的当前状态
int getMapType()
获取地图当前的模式,普通地图或者卫星图
float getMaxZoomLevel()
获取地图最大缩放级别
float getMinZoomLevel()
获取地图最小缩放级别
Projection getProjection()
获取地图投影坐标转换器, 当地图初始化完成之前返回 null,在 OnMapLoadedCallback.onMapLoaded() 之后才能正常
UiSettings getUiSettings()
获取地图ui控制器
void hideInfoWindow()
隐藏当前 InfoWindow
boolean isBaiduHeatMapEnabled()
获取是否打开百度热力图层(百度自有数据图层)
boolean isBuildingsEnabled()
获取是否允许楼块效果
boolean isMyLocationEnabled()
获取是否允许定位图层
boolean isSupportBaiduHeatMap()
查询当前图区是否支持百度热力图
boolean isTrafficEnabled()
获取是否打开交通图层
void removeMarkerClickListener(BaiduMap.OnMarkerClickListener listener)
移除一个地图 Marker 覆盖物点击事件监听者
void setBaiduHeatMapEnabled(boolean enabled)
设置是否打开百度热力图图层(百度自有数据图层) 注:地图层级大于11时,可显示热力图
void setBuildingsEnabled(boolean enabled)
设置是否允许楼块效果
void setMapStatus(MapStatusUpdate update)
改变地图状态
void setMapType(int type)
设置地图类型  MAP_TYPE_NORMAL 普通图;  MAP_TYPE_SATELLITE 卫星图
void setMaxAndMinZoomLevel(float max, float min)
设置地图最大以及最小缩放级别,地图支持的最大最小级别分别为[3-20]
void setMyLocationConfigeration(MyLocationConfiguration configeration)
设置定位图层配置信息,只有先允许定位图层后设置定位图层配置信息才会生效,参见 setMyLocationEnabled(boolean)
void setMyLocationData(MyLocationData data)
设置定位数据, 只有先允许定位图层后设置数据才会生效,参见 setMyLocationEnabled(boolean)
void setMyLocationEnabled(boolean enabled)
设置是否允许定位图层
void setOnMapClickListener(BaiduMap.OnMapClickListener listener)
设置地图单击事件监听者
void setOnMapDoubleClickListener(BaiduMap.OnMapDoubleClickListener listener)
设置地图双击事件监听者
void setOnMapDrawFrameCallback(BaiduMap.OnMapDrawFrameCallback callback)
设置百度地图在每一帧绘制时的回调接口,该接口在绘制线程中调用
void setOnMapLoadedCallback(BaiduMap.OnMapLoadedCallback callback)
设置地图加载完成回调
void setOnMapLongClickListener(BaiduMap.OnMapLongClickListener listener)
设置地图长按事件监听者
void setOnMapStatusChangeListener(BaiduMap.OnMapStatusChangeListener listener)
设置地图状态监听者
void setOnMapTouchListener(BaiduMap.OnMapTouchListener listener)
设置触摸地图事件监听者
void setOnMarkerClickListener(BaiduMap.OnMarkerClickListener listener)
设置地图 Marker 覆盖物点击事件监听者,自3.4.0版本起可设置多个监听对象,停止监听时调用removeMarkerClickListener移除监听对象 开发者注意根据OnMarkerClickListener的参数Marker来判断响应某个对象的点击事件
void setOnMarkerDragListener(BaiduMap.OnMarkerDragListener listener)
设置 Marker 拖拽事件监听者
void setOnMyLocationClickListener(BaiduMap.OnMyLocationClickListener listener)
设置定位图标点击事件监听者
void setTrafficEnabled(boolean enabled)
设置是否打开交通图层
void showInfoWindow(InfoWindow infoWindow)
显示 InfoWindow
void snapshot(BaiduMap.SnapshotReadyCallback callback)
发起截图请求
void snapshotScope(Rect rect, BaiduMap.SnapshotReadyCallback callback)
发起区域截图请求 注: Rect为null,截全屏
下面我们就用上面的方法来做一些基本的例子

2.实时交通图

xml文件不变,志勇对activity做一点修改就可以了。
package com.flyou.hellomap;

import android.app.Activity;
import android.os.Bundle;

import com.baidu.mapapi.SDKInitializer;
import com.baidu.mapapi.map.MapView;

public class TrafficMapActivity extends Activity {
  MapView mMapView = null;

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    // 在使用SDK各组件之前初始化context信息,传入ApplicationContext
    // 注意该方法要再setContentView方法之前实现
    SDKInitializer.initialize(getApplicationContext());

    setContentView(R.layout.activity_main);
    // 获取地图控件引用
    mMapView = (MapView) findViewById(R.id.bmapView);
    // 设置开启交通图
    mMapView.getMap().setTrafficEnabled(true);

  }

  @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();
  }


}
图中绿色的路段为畅通路段,红色的呵呵……

3.城市热力图

配置类似于上面
package com.flyou.hellomap;

import android.app.Activity;
import android.os.Bundle;

import com.baidu.mapapi.SDKInitializer;
import com.baidu.mapapi.map.MapView;

public class HeatMapActivity extends Activity {
  MapView mMapView = null;

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    // 在使用SDK各组件之前初始化context信息,传入ApplicationContext
    // 注意该方法要再setContentView方法之前实现
    SDKInitializer.initialize(getApplicationContext());

    setContentView(R.layout.activity_main);
    // 获取地图控件引用
    mMapView = (MapView) findViewById(R.id.bmapView);

    mMapView.getMap().setBaiduHeatMapEnabled(true);
  }

  @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();
  }

}

好吧,这是晚上获取的热力图,基本上温度都不是很高,看不出来……白天很明显



4.标注坐标点


LatLng 是最新版里面增加的坐标类,里面设置有坐标的经度和纬度

// 构建mark图标
    BitmapDescriptor bitmap = BitmapDescriptorFactory.fromResource(R.drawable.icon_marka);

//声明图标覆盖
 OverlayOptions optiOns= new MarkerOptions().icon(bitmap).title("河南大学").position(point);


package com.flyou.hellomap;

import android.app.Activity;
import android.os.Bundle;

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.MapView;
import com.baidu.mapapi.map.MarkerOptions;
import com.baidu.mapapi.map.OverlayOptions;
import com.baidu.mapapi.model.LatLng;

public class OverlayMapActivity extends Activity {
  MapView mMapView = null;

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    // 在使用SDK各组件之前初始化context信息,传入ApplicationContext
    // 注意该方法要再setContentView方法之前实现
    SDKInitializer.initialize(getApplicationContext());

    setContentView(R.layout.activity_main);
    // 获取地图控件引用
    mMapView = (MapView) findViewById(R.id.bmapView);

    // 获得map的管理对象
    BaiduMap map = mMapView.getMap();

    // 定义坐标点
    LatLng point = new LatLng(39.963175, 116.400244);
    // 构建mark图标
    BitmapDescriptor bitmap = BitmapDescriptorFactory.fromResource(R.drawable.icon_marka);
    // 构建markeroption,用于在地图上添加marker
    OverlayOptions optiOns= new MarkerOptions().icon(bitmap).title("河南大学").position(point);

    map.addOverlay(options);
  }

  @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();
  }

}




5.几何覆盖物

核心代码
//定义多边形的五个顶点  
    LatLng pt1 = new LatLng(39.93923, 116.357428);  
    LatLng pt2 = new LatLng(39.91923, 116.327428);  
    LatLng pt3 = new LatLng(39.89923, 116.347428);  
    LatLng pt4 = new LatLng(39.89923, 116.367428);  
    LatLng pt5 = new LatLng(39.91923, 116.387428);  
    List pts = new ArrayList();  
    pts.add(pt1);  
    pts.add(pt2);  
    pts.add(pt3);  
    pts.add(pt4);  
    pts.add(pt5);  
    //构建用户绘制多边形的Option对象  
    OverlayOptions polygOnOption= new PolygonOptions()  
        .points(pts)  
        .stroke(new Stroke(5, 0xAA00FF00))  
        .fillColor(0xAAFFFF00);  
    //在地图上添加多边形Option,用于显示  
    map.addOverlay(polygonOption);




6.文字覆盖物

//定义文字所显示的坐标点  
    LatLng llText = new LatLng(39.86923, 116.397428);  
    //构建文字Option对象,用于在地图上添加文字  
    OverlayOptions textOption = new TextOptions()  
        .bgColor(0xAAFFFF00)  
        .fontSize(24)  
        .fontColor(0xFFFF00FF)  
        .text("flyou")  
        .rotate(-30)  
        .position(llText);  
    //在地图上添加该文字对象并显示  
    map.addOverlay(textOption);


7.自定义其他弹出覆盖物



/创建InfoWindow展示的view  
    Button button = new Button(getApplicationContext());  
    button.setBackgroundResource(R.drawable.button_down);  
    //定义用于显示该InfoWindow的坐标点  
    LatLng pt = new LatLng(39.86923, 116.397428);  
    //创建InfoWindow , 传入 view, 地理坐标, y 轴偏移量 
    InfoWindow mInfoWindow = new InfoWindow(button, pt, -47);  
    //显示InfoWindow  
    map.showInfoWindow(mInfoWindow);


这一次我们主要学习了一些覆盖物和图层的用法,都很简单有没有……



推荐阅读
  • 本文介绍了在多平台下进行条件编译的必要性,以及具体的实现方法。通过示例代码展示了如何使用条件编译来实现不同平台的功能。最后总结了只要接口相同,不同平台下的编译运行结果也会相同。 ... [详细]
  • Android开发实现的计时器功能示例
    本文分享了Android开发实现的计时器功能示例,包括效果图、布局和按钮的使用。通过使用Chronometer控件,可以实现计时器功能。该示例适用于Android平台,供开发者参考。 ... [详细]
  • Go Cobra命令行工具入门教程
    本文介绍了Go语言实现的命令行工具Cobra的基本概念、安装方法和入门实践。Cobra被广泛应用于各种项目中,如Kubernetes、Hugo和Github CLI等。通过使用Cobra,我们可以快速创建命令行工具,适用于写测试脚本和各种服务的Admin CLI。文章还通过一个简单的demo演示了Cobra的使用方法。 ... [详细]
  • 关键词:Golang, Cookie, 跟踪位置, net/http/cookiejar, package main, golang.org/x/net/publicsuffix, io/ioutil, log, net/http, net/http/cookiejar ... [详细]
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • Go GUIlxn/walk 学习3.菜单栏和工具栏的具体实现
    本文介绍了使用Go语言的GUI库lxn/walk实现菜单栏和工具栏的具体方法,包括消息窗口的产生、文件放置动作响应和提示框的应用。部分代码来自上一篇博客和lxn/walk官方示例。文章提供了学习GUI开发的实际案例和代码示例。 ... [详细]
  • Java自带的观察者模式及实现方法详解
    本文介绍了Java自带的观察者模式,包括Observer和Observable对象的定义和使用方法。通过添加观察者和设置内部标志位,当被观察者中的事件发生变化时,通知观察者对象并执行相应的操作。实现观察者模式非常简单,只需继承Observable类和实现Observer接口即可。详情请参考Java官方api文档。 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • 本文介绍了设计师伊振华受邀参与沈阳市智慧城市运行管理中心项目的整体设计,并以数字赋能和创新驱动高质量发展的理念,建设了集成、智慧、高效的一体化城市综合管理平台,促进了城市的数字化转型。该中心被称为当代城市的智能心脏,为沈阳市的智慧城市建设做出了重要贡献。 ... [详细]
  • Java容器中的compareto方法排序原理解析
    本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ... [详细]
  • 本文介绍了如何在给定的有序字符序列中插入新字符,并保持序列的有序性。通过示例代码演示了插入过程,以及插入后的字符序列。 ... [详细]
  • Android Studio Bumblebee | 2021.1.1(大黄蜂版本使用介绍)
    本文介绍了Android Studio Bumblebee | 2021.1.1(大黄蜂版本)的使用方法和相关知识,包括Gradle的介绍、设备管理器的配置、无线调试、新版本问题等内容。同时还提供了更新版本的下载地址和启动页面截图。 ... [详细]
  • CF:3D City Model(小思维)问题解析和代码实现
    本文通过解析CF:3D City Model问题,介绍了问题的背景和要求,并给出了相应的代码实现。该问题涉及到在一个矩形的网格上建造城市的情景,每个网格单元可以作为建筑的基础,建筑由多个立方体叠加而成。文章详细讲解了问题的解决思路,并给出了相应的代码实现供读者参考。 ... [详细]
  • r2dbc配置多数据源
    R2dbc配置多数据源问题根据官网配置r2dbc连接mysql多数据源所遇到的问题pom配置可以参考官网,不过我这样配置会报错我并没有这样配置将以下内容添加到pom.xml文件d ... [详细]
  • Spring学习(4):Spring管理对象之间的关联关系
    本文是关于Spring学习的第四篇文章,讲述了Spring框架中管理对象之间的关联关系。文章介绍了MessageService类和MessagePrinter类的实现,并解释了它们之间的关联关系。通过学习本文,读者可以了解Spring框架中对象之间的关联关系的概念和实现方式。 ... [详细]
author-avatar
永不放弃2702935973
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有