osmdroid 7.2.1基础测试
osmdroid7.2.1跟6.0多版本变更还有有点大的,重构了不少接口。支持缩放到厘米级。第一次升级还是挺多地方都是红色。
osmdroid 官网:https://github.com/osmdroid/osmdroid
代码仓库:http://repo1.maven.org/maven2/org/osmdroid/
代码仓库里面有最新的库,还有很多相关的库,官方demo等等。
android osmdroid 加载常用离线地图格式(开源的在线地图)
android osmdroid 加载离线地图map格式以及地图网格绘制
android 开源库osmdroid绘制点线面(比例尺,缩小放大,导航图标等)
osmdroid 在线加载谷歌瓦片(谷歌地图瓦片地址解释)
这上面这几个测试时根据osmdroid 5.6.5测试的。
osmdroid7.2.1加载天地图在线矢量和影像数据
1、看看变更
(1)设置缩放级别的接口参数变成double类型,之前的是int类型。支持最大级别29级。
(2)在6.0以上版本去掉了MapTile这个类,所以在线加载瓦片地图的TileURL有点改变
(3)默认开启自动缩放的按钮。就是图下
这个在以前是没有,现在有。我觉得是很烦事情,后面会说怎么去掉这个的显示。
(4)还有一些关联库的变动,如下图
(5)更好支持geopackage的titledao和featuredao
2、部分常用配置的代码
package com.osmdroid.sample.util;
import android.app.Activity;
import android.content.Context;
import android.location.LocationManager;
import android.util.DisplayMetrics;
import org.osmdroid.views.MapView;
import org.osmdroid.views.overlay.ScaleBarOverlay;
import org.osmdroid.views.overlay.compass.CompassOverlay;
import org.osmdroid.views.overlay.compass.InternalCompassOrientationProvider;
import org.osmdroid.views.overlay.gestures.RotationGestureOverlay;
import org.osmdroid.views.overlay.mylocation.GpsMyLocationProvider;
import org.osmdroid.views.overlay.mylocation.MyLocationNewOverlay;
public class CustomsOsmdroidMapConfig {
//地图旋转
private RotationGestureOverlay mRotationGestureOverlay;
//比例尺
private ScaleBarOverlay mScaleBarOverlay;
//指南针方向
private CompassOverlay mCompassOverlay = null;
//设置导航图标的位置
protected MyLocationNewOverlay mLocationOverlay;
//是否地图旋转
protected boolean mbRotation = false;
public CustomsOsmdroidMapConfig() {
}
public void InitMap Overlays(MapView mapView, Activity context) {
mapView.setDrawingCacheEnabled(true);
mapView.setMaxZoomLevel(29.0);
mapView.setMinZoomLevel(5.0);
mapView.getController().setZoom(12.0);
mapView.setUseDataConnection(true);
mapView.setMultiTouchControls(true);// 触控放大缩小
mapView.getOverlayManager().getTilesOverlay().setEnabled(true);
//禁止自动出现放大,缩小的按钮 osmdroid 6.0以后才有的
mapView.setBuiltInZoomControls(false);
if (mbRotation) {
//地图自由旋转
mRotationGestureOverlay = new RotationGestureOverlay(mapView);
mRotationGestureOverlay.setEnabled(true);
mapView.getOverlays().add(this.mRotationGestureOverlay);
}
//比例尺配置
final DisplayMetrics dm = context.getResources().getDisplayMetrics();
mScaleBarOverlay = new ScaleBarOverlay(mapView);
mScaleBarOverlay.setCentred(true);
mScaleBarOverlay.setAlignBottom(true); //底部显示
mScaleBarOverlay.setLineWidth(2);
mScaleBarOverlay.setMaxLength(1.5F);
mScaleBarOverlay.setScaleBarOffset(dm.widthPixels / 2, dip2px(context, 60));
mapView.getOverlays().add(this.mScaleBarOverlay);
//指南针方向
www.yedom.cn
mCompassOverlay.new CompassOverlay(context, new InternalCompassOrientationProvider(context), mapView);
mCompassOverlay.enableCompass();
mapView.getOverlays().add(this.mCompassOverlay);
//设置导航图标
//自已重写了MyLocationNewOverlay
this.mLocationOverlay = new CustomsMyLocationOverlay(new GpsMyLocationProvider(context), mapView);
mapView.getOverlays().add(this.mLocationOverlay);
mLocationOverlay.enableMyLocation();
}
public MyLocationNewOverlay getmLocationOverlay(){
return mLocationOverlay;
}
public static int dip2px(Context context, float dpValue) {
final float scale = context.getResources().getDisplayMetrics().density;
return (int) (dpValue * scale + 0.5f);
}
public void onPause() {
mCompassOverlay.disableCompass();
mLocationOverlay.disableFollowLocation();
mLocationOverlay.disableMyLocation();
mScaleBarOverlay.enableScaleBar();
}
public void onResume(){
mLocationOverlay.enableFollowLocation();
mLocationOverlay.enableMyLocation();
mScaleBarOverlay.disableScaleBar();
}
}
关于禁止自动出现缩放按钮的代码就是这个了
//禁止自动出现放大,缩小的按钮 osmdroid 6.0以后才有的
mapView.setBuiltInZoomControls(false);
3、记得权限
如果使用gps定位,记得location权限,还有手机开启gps功能。
4、官方解释版本更新www.yedom.cn
翻译:
版本6.0.0有一些重大的变化。我建议在发布更新之前对您的应用程序进行广泛的测试。
生命周期的变化。MapView现在有一个onPause和onResume。这些调用被传递到所有覆盖类。总的来说,这是为了减少osmdroid-android用户需要正确处理开始/停止罗盘和gps传感器的样板代码量。这段代码都包含在这些覆盖层中。总之,您可以删除应用程序中与启动/停止GPS或Compass覆盖相关的任何代码,并使用mapView.onPause()和mapview . onrecse()调用来替换它。
如果您以前使用的是geopackage支持库,那么将会更改几个类和包的名称。影响应该是最小的,但是期望一些发现和替代工作。
在IConfigurationProvider接口中添加了几个新字段。如果你已经写好了自己的作品,那就准备做一些工作吧(这是次要的)。如果你延长了DefaultConfigurationProvider,然后你应该ok。
MapView和MapController有一些变化,这些都不应该被破坏。这些方法包括将当前缩放级别和动画设置为缩放级别。影响应该是最小的
原文地址:https://www.cnblogs.com/yedomcn/p/15009427.html
- maven build时报错Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.12.4:test
- Spring Cloud(九)高可用的分布式配置中心 Spring Cloud Config 集成 Eureka 服务
- Spring Cloud(八)高可用的分布式配置中心 Spring Cloud Config
- 用Raspberry Pi Zero打造「即插即用」的Web服务器
- Spring Cloud(七)服务网关 Zuul Filter 使用
- 基于Metronic的Bootstrap开发框架经验总结(1)-框架总览及菜单模块的处理
- Spring Cloud(六)服务网关 zuul 快速入门
- Docker Registry Server 搭建,配置免费HTTPS证书,及拥有权限认证、TLS 的私有仓库
- Ubuntu 17.04 编译安装 Nginx 1.9.9 配置 https 免费证书
- 基于Metronic的Bootstrap开发框架经验总结(2)--列表分页处理和插件JSTree的使用
- Docker Image 解决镜像无法删除的问题
- Docker Hub 仓库使用,及搭建 Docker Registry
- 基于Metronic的Bootstrap开发框架经验总结(3)--下拉列表Select2插件的使用
- Docker 容器操作
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 打卡群刷题总结0811——从中序与后序遍历序列构造二叉树
- Docker服务开放了这个端口,服务器分分钟变肉机!
- Oracle私网mtu滚动修改实施方案
- 因为两行代码,我差点被祭天......
- Web 云开发训练营总结 - 初阶
- 解密C语言编译背后的过程
- 知识卡片 反向传播中的梯度
- 网罗收集10046的各种Case,方便trace信息的收集 | Oracle官方博客转载
- 目标检测算法YOLO-V3结构详解
- 使用OPCache提升PHP的性能
- 克隆图
- LeetCode 03无重复字符的最长子串(滑动窗口)
- elasticSearch学习(五)
- MySQL进阶:索引与优化
- CentOS7搭建Zabbix4.2系统