2013-06-24 3 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 샘플 앱은 필요한 것을 보여줍니다. 안드로이드 워드 프로세서도 좋은 예가 있습니다.

관련 문제