Android编程之OSMDroid :一个设计用于完全替换 Android 内部的 MapView 类库
白羽 2018-07-24 来源 :网络 阅读 151 评论 0

摘要:本文将带你了解Android编程之OSMDroid :一个设计用于完全替换 Android 内部的 MapView 类库,希望本文对大家学Android有所帮助

OSMDroid 设计用于完全替换 Android 内部的 MapView 类,包含一个模块化的地图拼图,支持在线和离线地图以及覆盖地图,支持标注图标、位置跟踪和绘制形状。地图引擎使用 OpenStreetMap

 
 



使用
环境:
1、搭建好JDK环境,安装eclipse和ADT插件。
2、新建android工程
3、在工程包内建lib文件夹,将osmdroid-android-3.0.5.jar、httpmine-4.0.1.jar、appche-mine4j-0.6345035.jar、slf4j-android-1.5.8.jar放入lib文件夹。
4、在工程名上右键单击,选择Build Path->Config Build Path,单击Java Build Path->Libraries,点击Add JARs将3中的四个jar包加入到工程中。
(如果是下载的osmdroid源码,则3、4两步改为:将源码包放入工程src包下,刷新。建议使用源码,这样便于以后更改代码。)
5、在XML文件中可以使用org.osmdroid.views.MapView增加MapView组件。其中tilesource=”MapquestOSM”为地图设置切片源为OSM(OpenStreetMap)。
6、通过findViewById()来获得MapView的引用。然后初始化,为其设置切片源、中心点、图层放大级别。
权限:
你需要在Manifest文件中增加下列权限许可:





  
  
   
   Java
   
   <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

<uses-permission android:name="android.permission.INTERNET" />

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
   
    
     
    
     1234567891011
    
      <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
     
    
   
  





源文件:

 

  
  
   
   Java
   
   import org.osmdroid.tileprovider.tilesource.TileSourceFactory;

import org.osmdroid.util.GeoPoint;

import org.osmdroid.views.MapController;

import org.osmdroid.views.MapView;

import android.app.Activity;

import android.os.Bundle;

public class GeoMapActivity extends Activity {

private MapController mapController;

private MapView mapView;

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

mapView = (MapView) findViewById(R.id.map);

mapView.setTileSource(TileSourceFactory.MAPNIK);

mapView.setBuiltInZoomControls(true);

mapController = mapView.getController();

mapController.setZoom(15);

GeoPoint point2 = new GeoPoint(51496994, -134733);

mapController.setCenter(point2);

}

}
   
    
     
    
     12345678910111213141516171819202122232425262728293031323334353637383940414243
    
      import org.osmdroid.tileprovider.tilesource.TileSourceFactory; import org.osmdroid.util.GeoPoint; import org.osmdroid.views.MapController; import org.osmdroid.views.MapView; import android.app.Activity; import android.os.Bundle; public class GeoMapActivity extends Activity { private MapController mapController; private MapView mapView; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); mapView = (MapView) findViewById(R.id.map); mapView.setTileSource(TileSourceFactory.MAPNIK); mapView.setBuiltInZoomControls(true); mapController = mapView.getController(); mapController.setZoom(15); GeoPoint point2 = new GeoPoint(51496994, -134733); mapController.setCenter(point2); } }
     
    
   
  

布局文件main.xml:
 

  
  
   
   Java
   
   <?xml version="1.0" encoding="utf-8"?>

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="fill_parent"

android:layout_height="fill_parent" >

<org.osmdroid.views.MapView

android:id="@+id/map"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:clickable="true"

android:enabled="true"

tilesource="MapquestOSM" />

</RelativeLayout>
   
   
     
    
    
      <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" > <org.osmdroid.views.MapView android:id="@+id/map" android:layout_width="fill_parent" android:layout_height="fill_parent" android:clickable="true" android:enabled="true" tilesource="MapquestOSM" /> </RelativeLayout>
     
    
   
  

项目地址     

http://code.google.com/p/osmdroid/ ee 

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标移动开发之Android频道!

本文由 @白羽 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

X
免费获取海同IT培训资料
验证码手机号,获得海同独家IT培训资料
获取验证码
提交

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    ICP许可  沪B2-20190160