Nutiteq从MOBAC获取的离线数据未显示

时间:2014-08-25 08:09:28

标签: android map io gps nutiteq

我尝试按照here (weblink).

给出的源代码

然后,更改变量:

RasterDataSource dataSource = new HTTPRasterDataSource(new EPSG3857(), 0, 18, "http://otile1.mqcdn.com/tiles/1.0.0/osm/{zoom}/{x}/{y}.png");

使用我自己的值(该文件由MOBAC使用RMaps SQLite格式创建):

RasterDataSource dataSource = new HTTPRasterDataSource(new EPSG3857(), 0, 18, "/sdcard0/podcast/map/bandung.sqlitedb");

其余代码仍然相同。 但是没有显示地图。我有什么遗忘的吗?

这是我的 activity_layout.xml

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:fillViewport="true"
    android:orientation="vertical" >

<LinearLayout 
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/gps_title"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:textColor="@color/default_color" />

    <TextView
        android:id="@+id/textView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/gps_desc"
        android:textColor="@color/default_color" />

    <TableLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >

        <TableRow
            android:id="@+id/tableRow1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" >

            <TextView
                android:id="@+id/textView3"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/gps_livtr"
                android:textColor="@color/default_color" />

            <ToggleButton
                android:id="@+id/toggleButton1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" />
        </TableRow>
    </TableLayout>

    <TextView
        android:id="@+id/textView4"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/gps_curloc"
        android:textColor="@color/default_color" />

    <FrameLayout
        android:id="@+id/frm_lay"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >

        <com.nutiteq.MapView
            android:id="@+id/mapView"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent" />

        <ZoomControls
            android:id="@+id/zoomcontrols"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />
    </FrameLayout>

    <TableLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >

        <TableRow
            android:id="@+id/tableRow2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" >

            <TextView
                android:id="@+id/textView5"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/gps_latitude"
                android:textColor="@color/default_color" />

            <EditText
                android:id="@+id/txt_latitude"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:ems="10"
                android:inputType="text" />
        </TableRow>

        <TableRow
            android:id="@+id/tableRow3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" >

            <TextView
                android:id="@+id/textView6"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/gps_longtitude"
                android:textColor="@color/default_color" />

            <EditText
                android:id="@+id/txt_longtitude"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:inputType="text"
                android:ems="10" >

                <requestFocus />
            </EditText>
        </TableRow>

        <TableRow
            android:id="@+id/tableRow5"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" >

            <TextView
                android:id="@+id/textView7"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/gps_altitude"
                android:textColor="@color/default_color" />

            <EditText
                android:id="@+id/txt_altitude"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:ems="10"
                android:inputType="text" />
        </TableRow>
    </TableLayout>

</LinearLayout>

</ScrollView>

1 个答案:

答案 0 :(得分:0)

HTTPRasterDataSource用于 HTTP ,如名称所示。您必须使用AdvancedLayers项目中的 MBTilesRasterDataSource 来获取MOBAC生成的文件

    try {
        MBTilesRasterDataSource dataSource = new MBTilesRasterDataSource(new EPSG3857(), 0, 18, "/sdcard0/podcast/map/bandung.sqlitedb", false, this);
        RasterLayer mbLayer = new RasterLayer(dataSource, file.hashCode());
        mapView.getLayers().addLayer(mbLayer);
    } catch (IOException e) {
        // means usually that given .mbtiles file is not found or cannot be opened as sqlite database
        Log.error(e.getLocalizedMessage());
        e.printStackTrace();
    }