OpenStreetMap学习(一)
来源:互联网 发布:送货派单软件 编辑:程序博客网 时间:2024/06/03 13:01
前两天试着将离线地图导入了一个叫OSMand的APP里,发现还有 诸多的缺点,详见http://blog.csdn.net/u014712516/article/details/50480953
所以想着自己弄一个类似的东西出来,于是去官网上找:http://wiki.openstreetmap.org/wiki/Main_Page
发现要调用OSM的API需要这三个东东:
1.osmdroid-android-4.2.jar 下载链接:https://code.google.com/p/osmdroid/wiki/Downloads
2.slf4j-android-1.6.1-RC1.jar 下载链接:http://www.slf4j.org/android/
3.osmbonuspack_v5.1 下载链接:https://github.com/MKergall/osmbonuspack/releases(我用的是eclipse,所以选择了这个,用AS的大神可以选更新的)
前二者是实例化地图所必须的包,第三个是在你的地图上使用marker、POI、划线等等功能所需要的,现在干脆一次性把它也加进来。
废话不多说,直接上代码
main.xml
<?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/myOSMmapview" android:layout_width="match_parent" android:layout_height="match_parent"> </org.osmdroid.views.MapView></RelativeLayout>
MainActivity.java
package com.tj.osmbeta1;import org.osmdroid.bonuspack.overlays.Marker;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;import android.view.Menu;import android.view.MenuItem;import android.widget.Toast;public class MainActivity extends Activity {private MapView osm;private MapController mcontrol;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);osm = (MapView) findViewById(R.id.myOSMmapview);osm.setTileSource(TileSourceFactory.CYCLEMAP);osm.setBuiltInZoomControls(true);osm.setMultiTouchControls(true);mcontrol = (MapController) osm.getController();mcontrol.setZoom(11);GeoPoint center = new GeoPoint(39.94943,116.33507);mcontrol.animateTo(center);addMarker(center);}public void addMarker(GeoPoint center){Marker marker = new Marker(osm);marker.setPosition(center);marker.setAnchor(Marker.ANCHOR_CENTER,Marker.ANCHOR_BOTTOM);marker.setIcon(getResources().getDrawable(R.drawable.ic_launcher));osm.getOverlays().clear();osm.getOverlays().add(marker);osm.invalidate();}@Override public boolean onCreateOptionsMenu(Menu menu) { super.onCreateOptionsMenu(menu); menu.add(1, Menu.FIRST, 1, "退出"); return true;}@Override public boolean onOptionsItemSelected(MenuItem item) { switch(item.getItemId()){ case 1: this.finish(); break; default: return super.onOptionsItemSelected(item); } return true; } }
<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_LOCATION_EXTRA_COMMANDS" /><uses-permission android:name="android.permission.INTERNET" /><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /><uses-permission android:name="android.permission.STORAGE" /><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /><uses-permission android:name="android.permission.WAKE_LOCK" /><uses-permission android:name="android.permission.CAMERA" /><uses-permission android:name="android.permission.VIBRATE" /><uses-permission android:name="android.permission.RECORD_AUDIO" /><uses-permission android:name="com.android.vending.BILLING" />能力有限,我不管有的没的都加上来了。
现在的时间也就到此为止,只是很初步的实现了地图的基本功能。如果想要离线加载地图,可以把.obf文件拷贝到手机SD卡中的osmdroid文件夹的更目录即可。至于怎么生成.obf文件,可以看这篇文章:http://blog.csdn.net/u014712516/article/details/50480953
问题;
1.我发现当我用Mapkin进行渲染的时候地图会出现加载不出来的情况,后来只好选择了CYCLEMAP
2.通过把.obf文件放到根目录的方法可以读出离线的中国地图,但是读不出我自己修改过的地图,而这个在OSMand里面是可以做到的,现在还没想明白怎么回事,难道要调用一些别的方法?
3.一开始地图显示的中心点并不是我想要的点,但是安卓小人站的位置确实是我定的位置,不知道是为什么。
最后把资源包上传一下http://download.csdn.net/download/u014712516/9398492
接下来打算把那个读取地图的问题解决了,顺便研究一下卫星定位的问题。
由于个人能力有限,难免有错误,请各位不吝批评指正~
- OpenStreetMap学习(一)
- OpenStreetMap(一):水表警告
- OpenStreetMap初探(一)——了解OpenStreetMap
- OpenStreetMap初探(一)——了解OpenStreetMap
- OpenStreetMap初探(一)——了解OpenStreetMap
- openStreetMap学习网站
- 初步学习OpenStreetMap
- OpenStreetMap
- 共享免费世界地图OpenStreetMap(OSM)
- OpenStreetMap初探(外二篇)——留存
- OpenStreetMap初探(外二篇)——留存
- OpenStreetMap(三):基础应用实现
- SUMO仿真高级进阶系列一:利用OpenStreetMap生成地图
- OpenStreetMap初探(二)——osm的数据结构
- OpenStreetMap初探(三)——几个重要概念
- OpenStreetMap初探(四)——地图编辑之Potlatch
- OpenStreetMap初探(五)——地图编辑之JOSM
- OpenStreetMap初探(外一篇)——Serving Tiles
- Gevent tutorial (Gevent中文教程,Gevent中文翻译)
- hdoj 1087 Super Jumping! Jumping! Jumping! 【dp&&最大递增子段和】
- libusb学习-4
- Harry Potter's Exam
- 计算机基础知识-一级缓存与二级缓存,堆栈
- OpenStreetMap学习(一)
- SKSpriteKit 2-Physics and Collision
- nodejs摘要
- From movement tracks through events to places: Extracting and characterizing significant places from
- libusb学习-5
- MATLAB中cell数组使用
- 沟谷网络提取及沟壑密度计算
- libusb
- TinyOS论文12:Inter-Context Control-flow and Data-FlowText