2013-06-24 36 views
0
 package com.andersoncouncil.osm_01; 

    import org.osmdroid.DefaultResourceProxyImpl; 
    import org.osmdroid.ResourceProxy; 
    import org.osmdroid.tileprovider.tilesource.TileSourceFactory; 
    import org.osmdroid.util.GeoPoint; 
    import org.osmdroid.views.MapView; 

    import android.app.Activity; 
    import android.graphics.drawable.Drawable; 
    import android.os.Bundle; 
    import android.util.Log; 
    import android.view.Menu; 
    import android.widget.TextView; 

    public class MainActivity extends Activity { 

     private TextView tv_sample; 
     private MapView mapview_osm; 
     private CustomItemizedOverlay item_overlay=null; 

     @Override 
     protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.activity_main); 

      tv_sample=(TextView)findViewById(R.id.textview_sample); 
      mapview_osm=(MapView)findViewById(R.id.mapview); 

      ResourceProxy proxy=new DefaultResourceProxyImpl(getApplicationContext());  

      Drawable icon=getResources().getDrawable(R.drawable.ic_launcher); 

      int icon_height=icon.getIntrinsicHeight(); 
      int icon_width=icon.getIntrinsicWidth(); 
      icon.setBounds(0,icon_height,icon_width,0); 
      item_overlay=new CustomItemizedOverlay(icon, proxy); 
      mapview_osm.setTileSource(TileSourceFactory.MAPNIK); 
      //mapview_osm.setUseDataConnection(true); 
      mapview_osm.setBuiltInZoomControls(true);  
      mapview_osm.getOverlays().add(item_overlay); 

      GeoPoint g1=new GeoPoint(5*1000000, 5*1000000); 
      GeoPoint g2=new GeoPoint(50*100000, 70*1000000); 
      item_overlay.addItem(g1,"point 1","point 1"); 
      item_overlay.addItem(g2, "point 2", "point 2"); 

     } 

     @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; 
     } 

    } 


package com.andersoncouncil.osm_01; 

import java.util.ArrayList; 

import org.osmdroid.ResourceProxy; 
import org.osmdroid.api.IMapView; 
import org.osmdroid.util.GeoPoint; 
import org.osmdroid.views.overlay.ItemizedOverlay; 
import org.osmdroid.views.overlay.OverlayItem; 

import android.graphics.Point; 
import android.graphics.drawable.Drawable; 

public class CustomItemizedOverlay extends ItemizedOverlay<OverlayItem>{ 

    private ArrayList<OverlayItem> item_list=new ArrayList<OverlayItem>(); 

    public CustomItemizedOverlay(Drawable pDefaultMarker, 
      ResourceProxy pResourceProxy) { 
     super(pDefaultMarker, pResourceProxy); 
     // TODO Auto-generated constructor stub 
    } 

    public void addItem(GeoPoint p, String tittle, String snippets){ 
     OverlayItem item=new OverlayItem(tittle, snippets, p); 
     item_list.add(item); 
     populate(); 
    } 

    @Override 
    public boolean onSnapToItem(int arg0, int arg1, Point arg2, IMapView arg3) { 
     // TODO Auto-generated method stub 
     return false; 
    } 

    @Override 
    protected OverlayItem createItem(int arg0) { 
     // TODO Auto-generated method stub 
     return item_list.get(arg0); 
    } 

    @Override 
    public int size() { 
     // TODO Auto-generated method stub 
     return item_list.size(); 
    } 

} 

<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" 
    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" > 

    <TextView 
     android:id="@+id/textview_sample" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:text="OSM MAP EXAMPLE" 
     android:layout_alignParentTop="true" /> 

    <org.osmdroid.views.MapView 
     android:id="@+id/mapview" 
     android:layout_below="@id/textview_sample" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:clickable="true" /> 


</RelativeLayout> 

我大街上附上了我的代碼。它只是一個OSMDroid的簡單實現,在兩個地方顯示了啓動器圖標。但我的應用程序不播種任何地圖。它只顯示網格(地圖網格,不是實際的地方)。OSMDroid地圖不顯示 - 只有小灰瓦片

此程序清單文件中添加以下:

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

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

    <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" > 
     <activity 
      android:name="com.andersoncouncil.osm_01.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> 

任何人都在這裏,誰知道這個問題還是可以檢測到它,請回復。

+0

你在模擬器上還是在物理設備上運行它? –

+0

@Einar我有同樣的問題,我在模擬器上運行它,我也嘗試過用物理設備都不起作用 – NetStarter

回答

0

什麼版本的osmdroid?你的目標api是什麼?如果您使用API​​ 23或更高版本作爲目標,則明確向用戶請求互聯網訪問和文件系統存儲的許可。最新的osmdroid示例應用程序提供了所需的示例。 Android文檔也有一個很好的例子。