【发布时间】:2017-08-25 09:22:37
【问题描述】:
我正在尝试在 android studio 中实现 OpenStreetMap。我成功添加了如下所示的库。
这是我的 MainActivity:
package com.example.re.osm;
import org.osmdroid.views.MapController;
import org.osmdroid.views.MapView;
import android.app.Activity;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import com.example.harjotkaur.osm.R;
public class MainActivity extends Activity {
private MapView myOpenMapView;
private MapController myMapController;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
myOpenMapView = (MapView)findViewById(R.id.openmapview);
myOpenMapView.seharjotkaurtBuiltInZoomControls(true);
myMapController = myOpenMapView.getController();
myMapController.setZoom(4);
}
}
这是我的 build.gradle 文件:
apply plugin: 'com.android.application'
android {
compileSdkVersion 26
buildToolsVersion "26.0.0"
defaultConfig {
applicationId "com.example.re.osm"
minSdkVersion 15
targetSdkVersion 26
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
compile 'com.android.support:appcompat-v7:26.+'
compile 'com.android.support.constraint:constraint-layout:1.0.2'
testCompile 'junit:junit:4.12'
compile files('libs/slf4j-android-1.5.8.jar')
compile files('libs/osmdroid-android-3.0.8.jar')
}
这是我的清单文件:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.re.osm"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk android:minSdkVersion="10" />
<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" />
<application
android:icon="@drawable/ic_launcher"
android:label="OSM" >
<activity
android:name=".MainActivity"
android:label="OSM" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
但是当我运行应用程序时,我只能看到小矩形而不是地图。 我应该如何解决这个问题?我应该遵循哪些步骤?
有什么想法值得赞赏吗?
谢谢
【问题讨论】:
-
osmdroid 库的当前版本是 5.6.5 为什么用这么古老的版本(3.0.8)?它可能已经五岁了。
-
我无法下载 5.6.5 osmdroid 库。它带我到这个页面:jar-download.com/… 我应该使用哪个版本?
-
按照 osmdroid 页面上的说明进行操作:osmdroid.github.io/osmdroid 并使用 gradle 依赖项。如果你不能使用 gradle,你可以在这里下载:github.com/osmdroid/osmdroid/releases
-
是的。这样做是否完美。我成功地将世界地图设置为一组特定的地理坐标。关于如何获取当前用户位置的任何想法?
-
@Thomas 请点击此链接获取当前位置。 developer.android.com/training/location/retrieve-current.html如果你也能支持我的回答,那就太好了。
标签: android android-studio openstreetmap osmdroid