高德地图开发(二)加载瓦片数据
来源:互联网 发布:苏州有mac专柜吗 编辑:程序博客网 时间:2024/04/30 02:30
官方Demo中给我们提供了加载在线瓦片数据的功能。我们在上一节的基础上进行演示。话不多说先上图。
布局文件如下:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" > <com.amap.api.maps.MapView android:id="@+id/map" android:layout_width="match_parent" android:layout_height="match_parent"/> <Button android:id="@+id/btn_tile" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/tile_data" /></RelativeLayout>
MainActivity中都是按照Demo写的,就不多说了。
package com.example.maptest;import android.app.Activity;import android.os.Environment;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.widget.Button;import com.amap.api.maps.AMap;import com.amap.api.maps.MapView;import com.amap.api.maps.model.TileOverlay;import com.amap.api.maps.model.TileOverlayOptions;import com.amap.api.maps.model.UrlTileProvider;import java.net.URL;public class MainActivity extends Activity implements View.OnClickListener { private MapView mMapView; private Button btn_tile; private AMap aMap; private TileOverlay mtileOverlay; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mMapView = (MapView) findViewById(R.id.map); btn_tile = (Button) findViewById(R.id.btn_tile); //在activity执行onCreate时执行mMapView.onCreate(savedInstanceState),创建地图 mMapView.onCreate(savedInstanceState); if (aMap == null) { aMap = mMapView.getMap(); } //移动中心点到西安 aMap.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(34.341568, 108.940174), 10)); btn_tile.setOnClickListener(this); } @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(); } @Override protected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); //在activity执行onSaveInstanceState时执行mMapView.onSaveInstanceState (outState), //保存地图当前的状态 mMapView.onSaveInstanceState(outState); } @Override public void onClick(View v) { switch (v.getId()){ case R.id.btn_tile: if (mtileOverlay != null){ mtileOverlay.remove(); } //在线瓦片数据 useOMCMap(); break; } } /** * 加载在线瓦片数据 */ private void useOMCMap() { final String url = "http://tile.opencyclemap.org/cycle/%d/%d/%d.png"; TileOverlayOptions tileOverlayOptions = new TileOverlayOptions().tileProvider(new UrlTileProvider(256, 256) { @Override public URL getTileUrl(int x, int y, int zoom) { try { return new URL(String.format(url, zoom, x, y)); } catch (Exception e) { e.printStackTrace(); } return null; } }); tileOverlayOptions.diskCacheEnabled(true) .diskCacheDir("/storage/emulated/0/amap/OMCcache") .diskCacheSize(100000) .memoryCacheEnabled(true) .memCacheSize(100000) .zIndex(-9999); mtileOverlay = aMap.addTileOverlay(tileOverlayOptions); }}
官方介绍的是在线加载瓦片数据。下面我们来学习一下如何加载离线瓦片数据。首先需要离线tiles文件,有兴趣的可以下载尝试。
tiles离线瓦片数据
然后将其复制到手机的根目录下。和加载在线瓦片数据比较相似,只是路径变成了本地路径。
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" > <com.amap.api.maps.MapView android:id="@+id/map" android:layout_width="match_parent" android:layout_height="match_parent"/> <Button android:id="@+id/btn_tile" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/tile_data" /> <Button android:layout_below="@+id/btn_tile" android:id="@+id/btn_offline_tile" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/offline_tile" /> <Button android:layout_below="@+id/btn_offline_tile" android:id="@+id/btn_clear" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/clear" /></RelativeLayout>
MainActivity代码
package com.example.maptest;import android.app.Activity;import android.os.Environment;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.widget.Button;import com.amap.api.maps.AMap;import com.amap.api.maps.MapView;import com.amap.api.maps.model.TileOverlay;import com.amap.api.maps.model.TileOverlayOptions;import com.amap.api.maps.model.UrlTileProvider;import java.net.URL;public class MainActivity extends Activity implements View.OnClickListener { private MapView mMapView; private Button btn_tile; private Button btn_offline_tile; private Button btn_clear; private AMap aMap; private TileOverlay mtileOverlay; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mMapView = (MapView) findViewById(R.id.map); btn_tile = (Button) findViewById(R.id.btn_tile); btn_offline_tile = (Button) findViewById(R.id.btn_offline_tile); btn_clear = (Button) findViewById(R.id.btn_clear); //在activity执行onCreate时执行mMapView.onCreate(savedInstanceState),创建地图 mMapView.onCreate(savedInstanceState); if (aMap == null) { aMap = mMapView.getMap(); } //移动中心点到西安 aMap.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(34.341568, 108.940174), 10)); btn_tile.setOnClickListener(this); btn_offline_tile.setOnClickListener(this); btn_clear.setOnClickListener(this); } @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(); } @Override protected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); //在activity执行onSaveInstanceState时执行mMapView.onSaveInstanceState (outState), //保存地图当前的状态 mMapView.onSaveInstanceState(outState); } @Override public void onClick(View v) { switch (v.getId()){ case R.id.btn_tile: if (mtileOverlay != null){ mtileOverlay.remove(); } //在线瓦片数据 useOMCMap(); break; case R.id.btn_offline_tile: if (mtileOverlay != null){ mtileOverlay.remove(); } //离线瓦片数据 useOfflineTile(); break; case R.id.btn_clear: //清除所有瓦片 if (mtileOverlay != null){ mtileOverlay.remove(); } break; } } /** * 加载在线瓦片数据 */ private void useOMCMap() { final String url = "http://tile.opencyclemap.org/cycle/%d/%d/%d.png"; TileOverlayOptions tileOverlayOptions = new TileOverlayOptions().tileProvider(new UrlTileProvider(256, 256) { @Override public URL getTileUrl(int x, int y, int zoom) { try { return new URL(String.format(url, zoom, x, y)); } catch (Exception e) { e.printStackTrace(); } return null; } }); tileOverlayOptions.diskCacheEnabled(true) .diskCacheDir("/storage/emulated/0/amap/OMCcache") .diskCacheSize(100000) .memoryCacheEnabled(true) .memCacheSize(100000) .zIndex(-9999); mtileOverlay = aMap.addTileOverlay(tileOverlayOptions); } /** * 加载离线瓦片数据 */ private void useOfflineTile() { final String url = "file:///storage/emulated/0/tiles/tiles/%d/%d/%d.jpg"; TileOverlayOptions tileOverlayOptions = new TileOverlayOptions().tileProvider(new UrlTileProvider(256, 256) { @Override public URL getTileUrl(int x, int y, int zoom) { try { return new URL(String.format(url, zoom, x, y)); } catch (Exception e) { e.printStackTrace(); } return null; } }); tileOverlayOptions.diskCacheEnabled(true) .diskCacheDir("/storage/emulated/0/amap/tilecache") .diskCacheSize(100000) .memoryCacheEnabled(true) .memCacheSize(100000) .zIndex(-9999); mtileOverlay = aMap.addTileOverlay(tileOverlayOptions); }}
1 0
- 高德地图开发(二)加载瓦片数据
- openlayers 3 加载地图瓦片数据
- 高德地图之实例开发(一)加载地图
- 高德地图之实例开发(一)加载地图
- 百度地图、高德地图、谷歌地图离线瓦片下载研究(一)
- 下载Google地图,瓦片数据(1)
- arcgis api for js入门开发系列二十一 用HTML5 canvas绘制地图 瓦片加载平移缩放
- Geoserver+Openlayers3加载瓦片地图
- android开发二--------高德地图定位
- GMap.Net添加百度和高德地图瓦片源
- 高德地图开发(二)地图上显示指定位置
- osmdroid 在线加载谷歌瓦片(谷歌地图瓦片地址解释)
- Cocos2d-X游戏开发之CCTMXTileMap(瓦片地图)
- TMX瓦片地图无法加载问题
- TMX瓦片地图无法加载问题
- openLayers TMS加载谷歌地图瓦片
- osgearth加载本地离线影像瓦片地图
- cocos2dx之加载瓦片地图tmx
- andorid bionic简介
- 点击按钮,缩放图片(img.width、img.style.width、img.offsetWidth)
- 关于filebieat和IngestNode的一些配置
- [leetcode:python]66.Plus One
- onmouseover事件
- 高德地图开发(二)加载瓦片数据
- Linux学习笔记-002
- 成绩查询
- JS一维数组、多维数组和对象的混合使用
- inform表单验证,正则表达式,用户名,身份证,密码,验证码
- 使用AndroidStudio导入别人工程注意事项
- 剑指offer-60.把二叉树打印成多行
- mysql查询锁表及删除连接
- 异步拖拽上传文件--小实例