android室内导航
⑴ 问答:Android P都更新了哪些功能
Android P的新功能特性集中在了UI、通知体验、室内定位、图像存储几个方面,解决了之前一直存在的痛点。例如WiFi RTT一定程度上弥补了蜂窝网络在室内环境下的定位问题,HEIC图像格式则重点解决了存储容量问题。同时,Android P也在通知丰富度及操作便捷性等功能方面有所增强和提升。
一、WiFi RTT功能——复杂地形精确导航
WiFi RTT功能是Android P新引入的一个功能,从原理上来说与蜂窝网络的定位原理一致,但这个功能极大的弥补了蜂窝网络在室内定位的短板,WiFi RTT将能够在室内提供高精度的定位,这是蜂窝网络很难做到的。
WiFi RTT是全新的功能,在android.net.wifi包下增加了rtt包,用于存放WiFi RTT相关类和接口。
WiFi RTT的API以WifiRttManager为核心,借助AP热点或WiFi,利用RTT原理完成测距,通过三个以上的测距点就能够准确地定位到设备所在位置。
WiFiRTTManager提供了测距接口,是一个异步测距操作,根据官方文档(https://developer.android.com/reference/android/net/wifi/rtt/WifiRttManager.html)说明,其测距接口如下:
void startRanging(RangingRequest request, RangingResultCallback callback, Handler handler);
注:SDK Platforms Android P Preview Revision 1的相关接口定义与此不同,但实际的官方镜像中接口与此一致,开发者需要更新最新的Android P Preview Revision 2,此版本中Google已经修正该接口。
接口中,RangingRequest通过RangingRequest.Builder构建,RangingRequest.Builder构建出RangingRequest所需要的参数可以通过WiFiManager等系统服务获取到相关的内容,如List<ScanResult> scanResults = wifiManager.getScanResults();
以下提供一个简单的测试Demo,以供参考:
private WifiRttManager wifiRttManager;
private WifiManager wifiManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
// ... ...
if(getPackageManager().hasSystemFeature(PackageManager.FEATURE_WIFI_RTT)) {
Object service = this.getApplicationContext().getSystemService(Context.WIFI_RTT_RANGING_SERVICE);
if(service instanceof WifiRttManager) {
wifiRttManager= (WifiRttManager) service;
Log.i(TAG, "Get WifiRttManager Succ.");
}
wifiManager = (WifiManager) this.getApplicationContext().getSystemService(Context.WIFI_SERVICE);
IntentFilter wifiFileter = new IntentFilter();
wifiFileter.addAction(WifiManager.NETWORK_STATE_CHANGED_ACTION);
wifiFileter.addAction(WifiManager.WIFI_STATE_CHANGED_ACTION);
wifiFileter.addAction(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION);
registerReceiver(new WifiChangeReceiver(), wifiFileter);
}
// ... ...
}
private void startScanAPs() {
wifiManager.setWifiEnabled(true);
wifiManager.startScan();
}
class WifiChangeReceiver extends BroadcastReceiver {
@RequiresApi(api = 28)
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION)) {
List<ScanResult> scanResults = wifiManager.getScanResults();
Log.i(TAG, "Wifi Scan size:" + scanResults.size());
for(ScanResult scanResult: scanResults) {
Log.i(TAG, scanResult.toString());
RangingRequest.Builder builder = new RangingRequest.Builder();
builder.addAccessPoint(scanResult);
wifiRttManager.startRanging(builder.build(), new RangingResultCallback() {
@SuppressLint("Override")
@Override
public void onRangingFailure(int i) {
// TODO
}
@SuppressLint("Override")
@Override
public void onRangingResults(List<RangingResult> list) {
// TODO get result from list
for(RangingResult result : list) {
Log.i(TAG, result.toString());
}
}
}, new Handler());
}
}
}
}
使用WiFi RTT时,需要在AndroidManifest.xml中增加如下声明:
<uses-feature android:name="android.hardware.wifi.rtt" />
通过上面的简单代码,就能够实现WiFi RTT的功能。
WiFi RTT功能适用于复杂地形的大型室内外场所,如商场、娱乐场所、大型休闲、游乐场等等,提供场所内的局部区域精确化导航等功能。相信在很快的时间内,就能够在各大地图应用内体验到这项便利功能,对于路痴、地图盲的伙伴们将是极大的福音。
二、显示剪切——支持刘海屏
随着iPhone X的推出,“刘海屏”达到了空前的高潮。Android P里提供了对异形屏幕的UI适配兼容方案,通过DisplayCutout类提供的相关接口,能够获取到屏幕中Cutout区域的信息。
借助DisplayCutout,可以获取到如下信息:
DisplayCutout displayCutout = view.getRootWindowInsets().getDisplayCutout();
if(displayCutout != null) {
Region bounds = displayCutout.getBounds();
Log.d(TAG, String.format("Bounds:%s", bounds.toString()));
int top = displayCutout.getSafeInsetTop();
int bottom = displayCutout.getSafeInsetBottom();
int left = displayCutout.getSafeInsetLeft();
int right = displayCutout.getSafeInsetRight();
Log.d(TAG, String.format("Cutout edge:[left:%d, top:%d,right:%d, bottom:%d]", left, top, right, bottom));
}
public Region getBounds()能够获取到Cutout区域的所有信息,Region就是Cutout区域。
public int getSafeInsetTop()
public int getSafeInsetBottom()
public int getSafeInsetLeft()
public int getSafeInsetRight()
以上四个接口,可以获取到去除Cutout区域后的安全区域边界值。
通过上述数据,开发者能够精准的控制UI的绘制,避免将UI内容绘制到Cutout区域造成UI显示异常。
Android机器里,刘海屏目前还是极为罕见的Google为了方便开发者调试,在Android P Preview镜像中,特别提供了Cutout的支持,具体打开方式可以参考Google提供的特性说明文档cutout小节内容。
cutout小节:https://developer.android.com/preview/features.html#cutout
如图所示,笔者使用手头的Pixel 2 XL体验了Android P的Cutout设置。
三、通知优化——操作更多样,内容更丰富
Android P在通知内容的丰富度和操作上做了优化。
最近的版本中,Android系统的通知管理方面一直优化升级,Android O提供了更细粒度的Channel功能,通知栏推送时需要指定NotificationChannel,用户可以对通知的Channel选择,只允许感兴趣的Channel推送的通知显示。通过通道设置、免打扰优化等方式,极大增强了消息体验。
增强消息体验
Android P继续改进和增强消息通知[v1]。早在Android 7.0时,就提供了在通知中直接应答和输入,Android P对这一功能做了更多的增强。
Android P的通知中支持图像内容,可以通过setData()方法,给出消息的图像内容,在通知上展示给用户。
Android P同样简化了通知的配置形式。Android P中增加了Notification.Person类,用于区分同一个对话的参与者信息,如参与者的头像、URI等。根据官方说明,Android P中,通知消息的其他一些API,也使用Person替代之前的CharSequence。
简单的体验下新的API的开发:
NotificationChannel channel = new NotificationChannel("WtTestChannel",
"WtTestChannel", NotificationManager.IMPORTANCE_DEFAULT);
channel.enableLights(true); // luncher icon right corner's point
channel.setLightColor(Color.RED); // read point
channel.setShowBadge(true); // whether show this channel notification on long press icon
Notification.Builder builder =
new Notification.Builder(MainActivity.this,
"WtTestChannel");
Notification.Person p = new Notification.Person();
p.setName("WeTest");
p.setUri("http://cdn.wetest.qq.com/" +
"ui/1.2.0/pc/static/image/newLogo-16042.png");
Notification.MessagingStyle messageStyle = new Notification.MessagingStyle(p);
Notification.MessagingStyle.Message message =
new Notification.MessagingStyle.Message("WeTestMessage", 2000, p);
//show image
Uri image = Uri.parse(
"http://cdn.wetest.qq.com/ui/1.2.0/pc/static/image/newLogo-16042.png");
message.setData("image/png", image);
messageStyle.addMessage(message);
builder.setStyle(messageStyle);
builder.setSmallIcon(R.mipmap.ic_launcher);
Notification notification = builder.build();
NotificationManager notifyManager =
(NotificationManager) getSystemService(
MainActivity.this.getApplicationContext().NOTIFICATION_SERVICE);
notifyManager.createNotificationChannel(channel);
notifyManager.notify("WeTest", 1, notification);
通道设置、广播和免打扰优化
Android P中,重点做了内容丰富上的工作,同时也对Channel的设置方面做了一些简化处理。
Android O版本里,首次推出了NotificationChannel,开发者需要配置相应的Channel,才能够推送通知给用户。用户能够更加细粒度[v1]的针对App的Channel选择,而不是禁止App的所有通知内容。
而在Android P中,对通知的管理做了进一步的优化,包括可以屏蔽通道组、提供新的广播类型和新的免打扰优先级。
屏蔽通道组:用户可以在通知设置中屏蔽App的整个通道组。开发者可以通过isBlocked()来判断某个通道组是否被屏蔽了,并根据结果,不向已经被屏蔽的通道组发送任何通知。另外,开发者可以在App中使用新接口getNotificationChannelGroup()来查询当前的通道组设置。
新的广播类型:新广播类型是针对通道和通道组的功能增加的“通道(组)屏蔽状态变化”广播。开发者App中可以对所拥有的通道(组)接收广播,并根据具体广播内容作出动作。开发者可以通过NotificationManager,查看广播相关的具体信息。针对广播的动作可以通过Broadcasts查看具体的方法和信息。
免打扰优先级:NotificationManager.Policy增加了两个新的优先级常量,PRIORITY_CATEGORY_ALARMS(警告优先),PRIORITY_CATEGORY_MEDIA_SYSTEM_OTHER(媒体、系统和游戏声音优先)。
四、支持多摄像机和相机共享
近一段时间,双摄、多摄等机型纷纷面世。双摄及多摄提供了单摄像头所无法完成的能力,如无缝缩放、散景和立体视觉。Android P在这方面也提供了系统级的API支持。
Android P提供了系统API,支持从两个或者多个物理摄像头同步获取数据流。此前OEM厂商提供的双摄设备多是厂商自行定制系统实现,此时Android P推出了API,从系统层面上制定了API规范。
新的API提供了在不同相机之间切换逻辑数据流或混合数据流的调用能力。在捕捉延迟方面,提供新的会话参数,降低初始捕捉延迟。同时,提供相机共享能力,以解决在多种使用相机的场景下重复停止、开启相机流。闪光灯方面,Android P增加基于显示的闪光灯支持。光学防抖方面,Android P向开发者提供OIS时间戳,用于图像稳定性优化以及其他特效使用。
此外,Android P还支持外部USB/UVC相机,可以使用更强大的外置摄像头模组。
五、支持图像媒体后期处理
Android P引入了新的ImageDecoder,该类除了支持对各种图片格式的解码、缩放、裁剪之外,其强大之处在于支持对解码后的图像做后期处理(post-process),使用该功能可以添加复杂的自定义特效,比如圆角,或是将图片放在圆形像框中。编写后期处理回调函数,你可以添加任何绘图指令实现需要的效果。
此外,Android P原生支持GIF和WebP格式的动图,新增了AnimatedImageDrawable类,并被新增的解码器类ImageDecoder直接支持,用法跟矢量动画类AnimatedVectorDrawable类似,实现方式也类似,通过新增渲染线程和工作线程,不需要在UI线程处理动图更新,可以说是无痛使用,非常省心。
下面通过编写代码,显示一张gif图,并利用后期处理机制,在图像中间绘制一个绿色的实心圆。
final ImageView image = (ImageView) findViewById(R.id.image);
File gifFile = new File("/data/local/tmp/test.gif");
if (!gifFile.exists()) {
Log.d(TAG, "gifFile is not exsited!");
return;
}
ImageDecoder.Source source = ImageDecoder.createSource(gifFile);
try {
d = ImageDecoder.decodeDrawable(source, new ImageDecoder.OnHeaderDecodedListener() {
@Override
public void onHeaderDecoded(ImageDecoder imageDecoder, final ImageDecoder.ImageInfo imageInfo, ImageDecoder.Source source) {
imageDecoder.setPostProcessor(new PostProcessor() {
@Override
public int onPostProcess(Canvas canvas) {
int w = imageInfo.getSize().getWidth();
int h = imageInfo.getSize().getHeight();
Paint paint = new Paint();
paint.setAntiAlias(true);
paint.setColor(Color.GREEN);
canvas.drawCircle(w/2, h/2, h/4, new Paint(paint));
return 0;
}
});
}
});
image.setVisibility(View.VISIBLE);
image.setImageDrawable(d);
} catch (IOException e){
Log.d(TAG, e.toString());
}
Button button = (Button) findViewById(R.id.buttonText);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (d != null && d instanceof AnimatedImageDrawable) {
AnimatedImageDrawable ad = (AnimatedImageDrawable) d;
if (ad.isRunning()) {
Log.d(TAG, "stop running");
ad.stop();
} else {
Log.d(TAG, "start running");
ad.start();
}
}
}
});
六、支持HDR VP9和HEIF
Android P内置了对HDR VP9和HEIF(heic)图像编码的支持。HEIF是苹果在iOS11推出的一种高效压缩格式,目前在IphoneX、Iphone 8、IPhone 8P上已经支持。该格式的压缩率更高,但是编码该格式需要硬件的支持,解码并不需要。最新的支持库中的HeifWriter支持从YUV字节缓冲区、Surface或是Bitmap类转换为HEIF格式的静态图像。
Android P新引入了MediaPlayer2,支持DataSourceDesc创建的播放列表。
功能优化提升一览
一、神经网络API 1.1
在前不久发布的Android 8.1 (API level 27)上,Google首次在Android平台上推出了神经网络API,这意味着我们的Android机器智能化水平又提高了一大步。而本次Android P,进一步丰富了神经网络的支持,不仅对之前的相关API进行了优化,并且提供了9个新的操作,为具体的数据操作方面提供了更深入的支持。
二、改进表单自动填充
Android 8.0(API等级26)中引入了自动填充框架,这使得在应用中填写表单变得更加容易。 Android P引入了自动填充服务并实现了多项改进,得以在填写表单时进一步增强用户体验。
三、安全增强
Android P引入了许多新的安全功能,包括统一的指纹验证对话框和敏感交易的高确信度的用户确认。应用程序内的指纹认证UI也将会更加一致。
统一的指纹验证对话框
如果第三方APP想要使用指纹,Android系统框架为应用提供了指纹认证对话框,该功能可以提供统一的外观和使用体验,用户使用起来更放心。如果您的程序还在使用FingerprintManager,现在改用FingerprintDialog替代吧,系统来提供对话框显示。对了,在使用FingerprintDialog之前,别忘了调用hasSystemFeature()方法检查手机设备是否支持指纹。
敏感交易的高确信度的用户确认
Android P系统提供了受保护的确认API,借助这组全新的API,应用可以使用ConfirmationDialog对话框向用户提示,请求用户批准一条简短的声明, 该声明允许应用提醒用户,即将完成一笔敏感交易,例如支付。
如果用户接受声明,应用将会收到一条key-hash的消息认证码(HMAC),该签名由TEE产生,以保护用于输入和认证对话框的显示。该签名表示用于已经看到了声明并同意了。
硬件安全模块
Android P还提供了StrongBox Keymaster(强力沙盒秘钥大师),一个存储在硬件安全模块的具体实现。在这个硬件安全模块中有自己的CPU、安全存储空间,真随机数生成器,以及额外的机制抵御应用被篡改或是未授权应用的恶意加载。当检查存储在StrongBox Keymaster中的密钥时,系统通过可信执行环境(TEE)确认密钥的完整性。为了降低能耗,StrongBox支持了一组算法和不同长度的秘钥:
●RSA 2048
●AES 128 and 256
●ECDSA P-256
●HMAC-SHA256 (支持8字节到64字节任意秘钥长度)
●Triple DES 168
需要说明的是,这个机制需要硬件支持。
安全秘钥导入KeyStore
使用新的ASN.1编码的秘钥格式添加导入秘钥到Keystore,Android P提供了额外的密码解密安全能力。之后KeyMaster就可以解密KeyStore存储的秘钥,这种工作方式使得秘钥明文永远不会出现在设备内存中。这项特性要求设备支持Keymaster 4。
四、支持客户端侧Android备份加密
Android P支持使用客户端密钥对Android备份进行加密。 这项隐私措施,需要设备的PIN、图案密码或标准密码才能从用户设备备份的数据中恢复数据。
五、Accessibility优化
为了使App使用更便捷,Android在多个方面为开发者提供了易用性的优化。
1、Navigation semantics
Android P在App的场景切换和操作上为开发者提供了很多的优化点。
2、Accessibility pane titles
Android P中对Section提供了新的机制,被称为accessibility pane titles, Accessibility services能够接收这些标题的变化,使得能够对一些变化提供更加细粒度的信息。
指定Section的标题,可以通过android:accessibilityPaneTitle新属性来设置,同样运行时可以通过setAccessibilityPaneTitle()来设置标题。
3、顶部栏导航
Android P提供了新的顶部栏导航机制,通过设置View实例的android:accessibilityHeading属性为true,来显示逻辑标题。通过这些标题,用户就可以从一个标题导航到下一个标题,
4、群组导航和输出
针对屏幕阅读器,Android P对View提供了新的属性android:screenReaderFocusable代替原有的android:focusable来做标记,来解决在一些场景下为了使屏幕阅读器工作而设置View为可获取焦点的操作。这时,屏幕阅读器需要同时关注android:screenReaderFocusable和android:focusable设置为ture的View。
5、便捷操作
tooltips交互
Android P中,可以使用getTooltipText()去读取tooltips的文本内容。使用新的ACTION_SHOW_TOOLTIP和ACTION_HIDE_TOOLTIP控制View显示或者隐藏tooltips。
新全局交互
Android P在AccessibilityService类中提供了两个全新的操作。开发者的Service可以通过GLOBAL_ACTION_LOCK_SCREEN帮助用户锁屏,通过GLOBAL_ACTION_TAKE_SCREENSHOT帮助用户完成屏幕截图。
窗体改变的一些细节
Android P优化了在App多窗体同步发生变化时的更新内容获取。当出现TYPE_WINDOWS_CHANGED时,开发者可以通过getWindowChanges()API获取窗体变化情况。
当多窗体发生改变时,每个窗体都会发出自己的事件,开发者可以通过getSource()获取到事件窗体的根View。
如果你的App为View定义了accessibility pane titles,UI更新时你的Service就能够识别到相应的改动。当出现TYPE_WINDOW_STATE_CHANGED事件时,使用新方法 getContentChangeTypes()返回的类型,就能够获取到当前窗体的变化情况。例如,现在就能够通过上述的机制,检测到一个[v1]窗格是否有了新标题,或者一个窗格的消失。
六、新的Rotation方案
旋转屏幕,是一些游戏、视频等场景必要的操作,但有一些场景,用户旋转屏幕并不是为了让应用显示从竖屏变成横屏或反过来。为了避免这种误操作,Android P提供了新的机制,开发者可以指定屏幕不随重力感应旋转,而是用户通过一个单独的按钮自行控制屏幕显示转向。
⑵ android 怎么实现在室内定位
这个很难实现房间内定位,定位是靠检测不同信号反射角,房间内距离过短且墙壁反射信号,说以现在来说有很大难度!
以下部分摘抄:
大家都知道GPS,这个东西很强大,被各行各业使用。不过它也有一个很明显的缺陷,就是在室内不能定位,而且一般民用的精度也不够高(10m左右),相对于室内导航的要求(1m左右)还有一段距离。随着智能手机的普及,以及移动互联网的发展,地图与导航类软件将进入一个新的时代——室内导航。近几年来,包括谷歌、微软、苹果、博通等在内的一些科技巨头,还有一些世界有名的大学都在研究室内定位技术。
室内定位技术的商业化必将带来一波创新高潮,各种基于此技术的应用将出现在我们的面前,其影响和规模绝不会亚于GPS。我们可以想象一些比较常见的应用场景,比如在大型商场里面借助室内导航快速找到出口、电梯,家长用来跟踪小孩的位置避免小孩在超市中走丢,房屋根据你的位置打开或关闭电灯,商店根据用户的具体位置向用户推送更多关于商品的介绍等等。之前笔者看过诺基亚发布的一个视频,一位商务人士将手提包落在一个商店旁,当他走出几米远时手机就发出了提醒。室内定位还有很多场景可以被用上,让我们放开思维尽情遐想吧。
目前我们已经能够看到一些室内定位技术的应用介绍了。据我所知的有谷歌、诺基亚、博通、IndoorAtals、Qubulus、杜克大学这几个方案。下面笔者就把它们整理一下,欢迎大家在此基础上进行指正、补充。
谈谈室内定位
谷歌方案
谷歌手机地图6.0版的时候已经在一些地区加入了室内导航功能,此方案主要依靠GPS(室内一般也能搜索到2~3颗卫星)、wifi信号、手机基站以及根据一些“盲点”(室内无GPS、wifi或基站信号的地方)的具体位置完成室内的定位。目前此方案的精度还不是很满意,所以谷歌后来又发布了一个叫“Google Maps Floor Plan Marker”的手机应用,号召用户按照一定的步骤来提高室内导航的精度。
谷歌一直在努力解决两个问题:获取更多的建筑平面图;提高室内导航的精度。建筑平面图是室内导航的基础,就如同GPS车用导航需要电子导航地图一样。谷歌目前想通过“众包”的方式解决数据源的问题,就是鼓励用户上传建筑平面图。另外,用户在使用谷歌的室内导航时,谷歌会收集一些GPS、wifi、基站等信息,通过服务器进行处理分析之后为用户提供更准确的定位服务。
诺基亚方案
诺基亚采用的是HAIP技术,具体是什么笔者也没能查到更多的资料,不过诺基亚正在努力使它成为蓝牙协议的一部分,这样只要你的设备带有蓝牙模块,就能够使用这种技术进行定位。当然,仅有一个蓝牙模块还不能完成定位,还需要在室内安装一种定位发射台,通过这两者之间的通信完成定位。这种发射台可以覆盖100m×100m的范围,定位精度在30cm~100cm,据说这种发射台还有成本低、功耗低等特点,一台或多台都能完成定位。
博通方案
博通公司研制了一种用于室内定位的新芯片(BCM4752),具备三维定位功能(即你所在位置的高度也算出来)。这种芯片可以通过wifi、蓝牙或NFC等技术来提供室内定位系统支持。更强大的是,该芯片可以结合其它传感器,例如手机里的陀螺仪、加速度传感器、方位传感器等,将你位置的变化实时计算出来,甚至做到没有死角。博通公司的如意算盘是将这种芯片内置到智能手机里。
IndoorAtlas方案
IndoorAtlas是一家专注于室内导航解决方案的公司,刚成立不久。IndoorAtlas的方案基于地球磁场,依据是每一个具体位置的磁场信息都不一样。不过使用这种技术进行导航比较麻烦,首先用户需要上传建筑平面图,然后还需要你拿着移动设备绕室内一圈,记录下各个位置的地磁信号特征,这些信息需要上传到IndoorAtlas的服务器。最后,你需要使用IndoorAtlas提供的工具包开发一个应用才能使用定位功能(IndoorAtlas的开发工具包可以在线申请,不过笔者申请了两次都没结果)。
Qubulus方案
跟IndoorAtlas不同的是,Qubulus公司根据无线电信号(Radio Signature)来定位。每一个位置的无线电信号数量、频度、强度等也是不同的,Qubulus根据这些差异计算出你的具体位置。使用Qubulus的方案,你同样需要收集室内的无线电信号。Qubulus也提供了开发工具包,很容易申请下来。开发工具包里有一个例子,可以使用Eclipse直接编译通过。
杜克大学方案
杜克大学则借助现实生活中路标(landmarks)的思想,正在开发一个叫做UnLoc的应用。此应用通过感知wifi、3G信号死角,以及一些运动特征,如电梯、楼梯等,并根据这些位置已知的路标来计算你的位置。当你移动的时候,就根据其他感应器( 陀螺仪、加速度传感器、方位传感器等)来跟踪你的位置。这一过程精度会逐渐降低,但当你到达下一个路标时,位置就会被校准
⑶ 移动gis平台ucmap for android有哪些功能哪位大神详细列举一下
UCMap for Android是当前主流的移动GIS开发组件,拥有业界最快的地图显示性能,依托庞大的接口体系为开发者提供强大且丰富的定制功能,UCMap for Android从2009年第一版推出至今,经历了多次的版本升级,其稳定性得到众多实际项目的检验,在GIS各行业得到广泛应用,例如,土地确权、国土监察、电力踏勘、林业调查、林业消防、管线巡检、部件采集、城市管理、房产测绘、农业测图配方、单兵通、航迹管理、室内导航、智慧景区、公安应急等
1、数据格式
UCMap for Android支持通用的矢量地图格式SHP,支持各种遥感影像格式Geotiff、Img、BMP、JPG、PNG等,同时还支持离线的Google地图和影像,或者自定义瓦片图;
2、数据加密
地图数据是重要的保密信息,为了在数据丢失或未授权的情况下,外界无法解读出数据本身的内容,这就要求数据以密文的形式存在;为此,UCMap for Android支持地图数据的加密,经过加密的地图是以密文的形式存在,只有输入正确的口令才能解密;
3、数据更新
地图数据是有现势性的,即经过一段时间,由于地理自然环境的变化,地图数据也应及时更新,这样才能让地图数据更加准确地反映现实情况,所以,地图数据的更新就显得尤为重要;UCMap for Android不但支持离线地图,同时也支持地图在线更新,即可以在线更新替换整个地图数据,也可以更新替换地图中的某些图层;
4、符号化
地图是将地理数据通过符号化的方式予以展现的,UCMap for Android除了支持常规预定义的点、线、面符号外,还支持自定义的SVG矢量符号,用户可以自定义各种矢量符号来渲染地图,实现地图强大的直观表现力;
5、地图显示
地图是由各个专题的图层叠加而成,图层的性质有两种,即矢量图层和影像图层,在坐标一致的前提下,可以将影像图层作为背景图,将矢量图层叠加在影像图层之上;UCMap for Android拥有业界最高的地图浏览性能,支持矢量图和影像图叠加显示,支持地图的缩小、放大、平移、双指旋转,支持滑动的动画效果,支持地图比例尺&指北针等小部件;
6、地图与图层管理
装载地图、设置\获取地图范围、设置\获取地图比例尺、设置\获取地图单位、获取地图图层,添加图层、删除图层、调整图层顺序、修改图层标注字段、修改图层样式、查询图层等;
7、地图查询
地图查询分属性查询和空间查询,属性查询是以地图要素的某些属性值为条件进行SQL查询,查询返回要素的属性或几何信息;空间查询是以地图要素之间的空间拓扑关系为条件进行扩展型的SQL查询;UCMap for Android支持各种类型的SQL查询,尤其是空间查询,能覆盖要素之间各种空间拓扑关系,如Disjoint、Touches、Crosses、Within、Overlaps、Contains、Intersects、Equals、DWithin等空间谓词;
8、要素编辑
一个要素对应数据库表中的一条记录,记录里有属性字段和几何字段,所谓编辑就是对这些属性字段和几何字段进行增加、删除、修改等动作,于是,添加要素、删除要素、更新要素、导出shp是UCMap for Android最基础的功能;为了适应移动端手指或触笔来编辑几何图形,UCMap for Android设计了人性化的编辑交互模式,如点选或框选要素、捕捉节点、移动节点、添加节点、删除节点、移动要素、编辑动作的Redo\Undo(可以无数次)、信息查询info等;UCMap for Android还提供了更高级的编辑,如线或图斑的裁剪、合并等拓扑编辑;针对测量成图的需求,还提供了根据测图过程中测得的长度和角度自动绘制图形的功能;
9、专题图渲染
UCMap for Android支持多种专题图渲染,根据所给定的属性条件,可定制各种专题渲染,甚至可以隐藏图层中的要素;
10、坐标系转换
UCMap for Android支持2个任意投影类型之间的坐标转换,支持四参数、七参数坐标转换;
11、地图量算
UCMap for Android支持地图测距、测面积、测角度;
12、定位监控和轨迹显示
UCMap for Android能实时对若干监控点进行实时显示并快速刷新,能查询并绘制某个监控点的历史轨迹;
13、地图标注
UCMap for Android提供了一个特殊的图层,即装饰图层,用户可以在这个图层上对地图进行标绘,下面要重点介绍的地图标绘就绘制在这个图层上,除了能标绘军标以外,还能绘制矩形、直线、圆、椭圆、路径、文字等;
14、等值线绘制
UCMap for Android支持对离散高程点(或气象点)进行插值,并生成高程等值线或气象等值线图;
15、路径规划与导航
UCMap for Android支持特定场所的简单道路的路径规划,例如,室内地图、景区地图、港口码头等特定场所的路径规划;
16、地图标绘
针对军事作战、应急等行业,协同标绘是其基本需求,UCMap for Android是支持矢量标绘,能对标绘的符号进行组合、拆分、移动、缩放、拉伸、旋转等等操作;标绘是在装饰图层上进行的,一个标绘就是一个装饰对象,装饰对象可以是任意的SVG符号,也可以是预定义的图形;对于测绘行业,地图标绘也为测绘草图的绘制提供了完美的解决方案;
17、集成功能
UCMapfor Android还可以将手机拍照、录音、录像、GPS定位等功能集成在一起,在地图上记录这些多媒体信息采集的时空信息;
UCMapfor Android为开发人员提供了强大的GIS基础平台,用户根据自身项目的需求、通过二次开发来实现所需要的应用产品;UCMap接口庞大、结合本人近几年移动GIS开发经验,以上只是UCMap基础功能的节略,更深入细致的使用还需要开发者阅读UCMap的开发教程和API文档!
⑷ 鍦ㄥ浗澶栫敤浠涔堢墝瀛愮殑镓嬫満鍦板浘濂藉憿锛
鍦ㄥ浗澶栧栧彲浠ョ敤镄勫艰埅鍦板浘锛
1.锏惧害鍦板浘锛氢笓闂ㄤ负涓锲戒汉鍑哄冩父閲忚韩瀹氩仛锛岄溃钖戝浗鍐呭嚭澧冩父浜虹兢銆傜洰鍓嶅凡缁忚嗙洊鍏ㄧ悆200澶氢釜锲藉讹纴鐑闂ㄥ嚭澧冩父鐩镄勫湴杈惧埌鍏ㄨ嗙洊锛屽姛鑳戒笂姝ヨ屽艰埅,椹捐溅瀵艰埅閮芥湁锛屽綋鍦板煄甯傚ぉ姘旓纴缈昏疟锛屾眹鐜囷纴鍦伴搧锛屾敾鐣ラ兘鑳芥柟渚挎煡鍒帮纴鍑嗙‘镐у緢楂樸