android-studio - 在 Android Studio 中使用 Mapsforge

标签 android-studio mapsforge

我需要在我的 Android Studio 应用中使用 Mapsforge(离线 map )。我已经导入了这些库:

  • mapsforge-core-0.4.0.jar
  • mapsforge-map-0.4.0.jar
  • mapsforge-map-android-0.4.0.jar
  • mapsforge-map-reader-0.4.0.jar
  • svg-android-0.4.0.jar

我在 build.gradle 中包含了依赖项:

compile fileTree(dir: 'libs', include: ['*.jar'])

这是代码:

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import org.mapsforge.map.android.view.MapView;


public class MapaForgeFragment extends Fragment {

    private MapView mapView;
    private View view;

    public static MapaForgeFragment newInstance() {
        MapaForgeFragment fragment = new MapaForgeFragment();
        Bundle args = new Bundle();
        fragment.setArguments(args);
        return fragment;
    }
    public MapaForgeFragment() {
        // Required empty public constructor
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        view = inflater.inflate(R.layout.fragment_mapa_forge, container, false);

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

        return view;
    }

}

在 xml 中:

<FrameLayout 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"
    tools:context="cat.bcn.horta.MapaForgeFragment">

    <org.mapsforge.map.android.view.MapView
        android:id="@+id/mapView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>


</FrameLayout>

这是返回的错误:

E/AndroidRuntime﹕ FATAL EXCEPTION: main
    android.view.InflateException: Binary XML file line #7: Error inflating class org.mapsforge.map.android.view.MapView
            at android.view.LayoutInflater.createView(LayoutInflater.java:613)
            at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:687)
            at android.view.LayoutInflater.rInflate(LayoutInflater.java:746)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:489)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:396)
            at cat.bcn.horta.MapaForgeFragment.onCreateView(MapaForgeFragment.java:36)
            at android.support.v4.app.Fragment.performCreateView(Fragment.java:1500)
            at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:938)
            at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1115)
            at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:682)
            at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1478)
            at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:446)
            at android.os.Handler.handleCallback(Handler.java:725)
            at android.os.Handler.dispatchMessage(Handler.java:92)
            at android.os.Looper.loop(Looper.java:137)
            at android.app.ActivityThread.main(ActivityThread.java:5227)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:511)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:795)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:562)
            at dalvik.system.NativeStart.main(Native Method)
     Caused by: java.lang.reflect.InvocationTargetException
            at java.lang.reflect.Constructor.constructNative(Native Method)
            at java.lang.reflect.Constructor.newInstance(Constructor.java:417)
            at android.view.LayoutInflater.createView(LayoutInflater.java:587)
            at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:687)
            at android.view.LayoutInflater.rInflate(LayoutInflater.java:746)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:489)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:396)
            at cat.bcn.horta.MapaForgeFragment.onCreateView(MapaForgeFragment.java:36)
            at android.support.v4.app.Fragment.performCreateView(Fragment.java:1500)
            at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:938)
            at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1115)
            at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:682)
            at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1478)
            at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:446)
            at android.os.Handler.handleCallback(Handler.java:725)
            at android.os.Handler.dispatchMessage(Handler.java:92)
            at android.os.Looper.loop(Looper.java:137)
            at android.app.ActivityThread.main(ActivityThread.java:5227)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:511)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:795)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:562)
            at dalvik.system.NativeStart.main(Native Method)
     Caused by: java.lang.NullPointerException
            at org.mapsforge.map.view.FpsCounter.createPaint(FpsCounter.java:33)
            at org.mapsforge.map.view.FpsCounter.<init>(FpsCounter.java:47)
            at org.mapsforge.map.android.view.MapView.<init>(MapView.java:70)
            at java.lang.reflect.Constructor.constructNative(Native Method)
            at java.lang.reflect.Constructor.newInstance(Constructor.java:417)
            at android.view.LayoutInflater.createView(LayoutInflater.java:587)
            at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:687)
            at android.view.LayoutInflater.rInflate(LayoutInflater.java:746)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:489)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:396)
            at cat.bcn.horta.MapaForgeFragment.onCreateView(MapaForgeFragment.java:36)
            at android.support.v4.app.Fragment.performCreateView(Fragment.java:1500)
            at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:938)
            at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1115)
            at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:682)
            at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1478)
            at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:446)
            at android.os.Handler.handleCallback(Handler.java:725)
            at android.os.Handler.dispatchMessage(Handler.java:92)
            at android.os.Looper.loop(Looper.java:137)
            at android.app.ActivityThread.main(ActivityThread.java:5227)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:511)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:795)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:562)
            at dalvik.system.NativeStart.main(Native Method)

我认为在 Eclipse 中导入 jar 文件就足够了,但在 Android Studio 中可能还需要其他东西。

最佳答案

好像你忘了初始化 mapsforge 库

AndroidGraphicFactory.createInstance(appContext);

appContext 是您的应用程序上下文。

关于android-studio - 在 Android Studio 中使用 Mapsforge,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25424973/

相关文章:

android - Android 中的 TableLayout 使用 Imageview

android - 如何将托管在 github 上的项目添加到 android studio gradle 依赖项? Pom.xml 可用

android - 任务 :app:signReleaseBundle'A failure executing com. android.build.gradle.internal.tasks.Workers$ActionFacade 失败,无法从存储中读取 key

java - 如何在 Android Studio 中使用 Kotlin 编写/编辑 txt 文件?

android - Mapsforge on tap listeners 用于多个标记

android - Osmdroid 与 Mapsforge

java - 服务条目不断从 list 中消失

java - Mapsforge 0.4.0 和 Eclipse 出现 NoClassDefFoundError,无法构建

java - 如何使用 SharedPreferences 保存标记

java - MapView 是抽象的 - 无法实例化