【问题标题】:My osmdroid and mobile atlas creator only show empty tiles我的 osmdroid 和移动地图集创建者只显示空图块
【发布时间】:2014-08-04 00:11:16
【问题描述】:

您好,我正在制作离线地图。 我看不到从 Mobile Atlas Creator 创建的地图图块。我正在使用 MapQuest 和 Tiel 格式 PNG,它没有显示任何问题并正确生成 .APK 我都试过了

  • 我将 .zip 文件放在 /sdcard/osmdroid/ 中
  • 我通过 MapquestOSM 更改了 .zip MapQuest 中的第一个文件夹
  • 我查看了我的 GeoPoint 但是对我没有任何作用...

我的库是下一个...

  • android-support-v4.jar
  • osmdroid-android-3.0.7.jar
  • osmdroid-android-3.0.7-javadoc.jar -slf4j-android-1.5.8.jar

我的来源是: MainActivity.java

package com.example.mapasasmdroid;
import org.osmdroid.tileprovider.tilesource.TileSourceFactory;
import org.osmdroid.util.GeoPoint;
import org.osmdroid.views.MapView;
import android.app.Activity;
import android.os.Bundle;
public class MainActivity extends Activity {

  protected void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       MapView mapView = new MapView(this, 256); //constructor
       mapView.setClickable(true);
       mapView.setBuiltInZoomControls(true);
       setContentView(mapView); //displaying the MapView
       mapView.setTileSource(TileSourceFactory.MAPQUESTOSM);
       mapView.getController().setZoom(15); //set initial zoom-level, depends on your need
       mapView.getController().setCenter(new GeoPoint(-16,528484,-68.109397));
       //mapView.getController().setCenter(new GeoPoint(,));
       mapView.setUseDataConnection(true); 
       mapView.setMultiTouchControls(true);
     }

}

activity_main.xml

<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"
tools:context="${relativePackage}.${activityClass}" >

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.mapasasmdroid"
android:versionCode="1"
android:versionName="1.0" >

<uses-sdk
    android:minSdkVersion="8"
    android:targetSdkVersion="21" />

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
        android:name=".MainActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
</application>

请帮帮我!!我真的很需要这个...

【问题讨论】:

    标签: android offline osmdroid


    【解决方案1】:

    要从您的内存中获取地图,您正在使用以下代码:

     map.setTileSource(TileSourceFactory.MAPQUESTOSM);
    

    因此,存储在您设备中的图像必须采用正确的格式和层次结构,应如下所示:

    sdcard/osmdroid/tiles/MAPQUESTOSM/X/Y.png.tiles

    【讨论】:

      【解决方案2】:

      您需要将 Internet 权限添加到您的 android 清单中:

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

      那么,在onCreate的末尾,需要添加:

      setContentView(mapView);
      

      为了显示视图。

      【讨论】:

      • @Vrian7 我添加了一个应该可以解决您的问题的块。
      • Osmdroid 无需Internet 许可即可工作。不过很奇怪!
      【解决方案3】:
      super.onCreate(savedInstanceState);
              super.onCreate(savedInstanceState);
              setContentView(R.layout.activity_main);
              MapView map = (MapView) findViewById(R.id.mapview);
              map.setUseDataConnection(true);
              map.setTileSource(TileSourceFactory.MAPQUESTOSM); // Gets a server "valid" response.
              map.setBuiltInZoomControls(true);
              map.setMultiTouchControls(true);
              // map.setUseDataConnection(true);// 
              GeoPoint startPoint = new GeoPoint( 27.72,  85.32);
              IMapController mapController = map.getController();
              mapController.setZoom(8);
              mapController.setCenter(startPoint);
      

      这是activity_main页面:

      <LinearLayout 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"
      android:orientation="vertical" >
      
          <org.osmdroid.views.MapView
              android:id="@+id/mapview"
              android:layout_width="fill_parent"
              android:layout_height="fill_parent"/>
      </LinearLayout>
      

      这是清单:

      <uses-permission android:name="android.permission.INTERNET" >
       <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" >
          </uses-permission>
          <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" >
          </uses-permission>
          <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" >
          </uses-permission>
          <uses-permission android:name="android.permission.READ_INTERNAL_STORAGE" >
          </uses-permission>
          <uses-permission android:name="android.permission.WRITE_INTERNAL_STORAGE" >
          </uses-permission>
          <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" >
          </uses-permission>
          <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" >
          </uses-permission>
          <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" >
          </uses-permission>
      
          <uses-feature android:name="android.hardware.location.network" />
          <uses-feature android:name="android.hardware.location.gps" />
          <uses-feature android:name="android.hardware.wifi" />
      

      基本上问题在于: 来自 Mobile atlas creator,图块以 .jpg 格式保存,而使用 OSMDroid 库的自动下载(缓存)正在下载 .png.tile 格式。因此,您只需要创建 .png.tile 格式的图块和 setusedataconnection(false) 并关闭 Internet 权限,它将自动加载数据。干杯

      【讨论】:

        猜你喜欢
        • 2013-07-27
        • 1970-01-01
        • 2014-10-20
        • 2012-12-24
        • 1970-01-01
        • 2011-12-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多