2013-05-25 54 views
0

我想用CloudMade(或其他)工作osmdroid,但我无法显示任何瓷砖只有空白方块。我可以在登录猫唯一看到的是无法用CloudMade显示osmdroid瓷砖

找不到方法org.osmdroid.views.MapView.getScaleX,从方法引用org.osmdroid.views.overlay.SafeDrawOverlay.draw

无法解决虚拟方法5572:Lorg/osmdroid /视图/ MapView的; .getScaleX()

的AndroidManifest.xml

<uses-sdk 
     android:minSdkVersion="7" 
     android:targetSdkVersion="17" /> 
<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_WIFI_STATE" /> 
<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:allowBackup="true" 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" 
     android:theme="@style/AppTheme" > 
<meta-data android:name="CLOUDMADE_KEY" android:value="heremycorrectkeyfromcloudmade" /> 
     <activity 
      android:name="com.example.testosm.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> 

</manifest> 

main_activity.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    tools:context=".MainActivity" > 

    <org.osmdroid.views.MapView 
     android:id="@+id/mapTest" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" /> 

</RelativeLayout> 

MainActivity.java

package com.example.testosm; 

import org.osmdroid.tileprovider.tilesource.TileSourceFactory; 
import org.osmdroid.tileprovider.util.CloudmadeUtil; 
import org.osmdroid.util.GeoPoint; 
import org.osmdroid.views.MapController; 
import org.osmdroid.views.MapView; 

import android.os.Bundle; 
import android.app.Activity; 
import android.view.Menu; 

public class MainActivity extends Activity { 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main);   
    CloudmadeUtil.retrieveCloudmadeKey(getApplicationContext()); 
    MapView mapView = (MapView) findViewById(R.id.mapTest);  
    mapView.setTileSource(TileSourceFactory.CLOUDMADESMALLTILES); 
    mapView.setBuiltInZoomControls(true); 
    MapController mMapController = mapView.getController(); 
    mMapController.setZoom(13); 
    GeoPoint gPt = new GeoPoint(51500000, -150000); 
    //Centre map near to Hyde Park Corner, London 
    mMapController.setCenter(gPt); 
} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.main, menu); 
    return true; 
} 

} 

回答

0

我怀疑你的目标SDK太低。 Osmdroid支持SDK 7,但是如果您的设备较高,那么它将使用来自较新API的api调用。目标最新的SDK,但保持你的最小的SDK在7。

+0

感谢您的帮助,我试图改变清单 TlmaK0

+0

崩溃发生在具有所有API的手机上,还是只有早期的API? – kurtzmarc

+0

我使用新老apis模拟器测试它,并使用一个带有SDK 10的reald设备进行测试。但是我认为它不会崩溃,因为内存会像加载tile一样增加。 – TlmaK0