Osmdroid覆盖崩溃应用程序Android

如何解决Osmdroid覆盖崩溃应用程序Android

|
package gpstest.example.com;



import org.osmdroid.tileprovider.tilesource.TileSourceFactory;
import org.osmdroid.views.overlay.MyLocationOverlay;
import org.osmdroid.util.GeoPoint;
import org.osmdroid.views.MapView;
import android.content.Context;
import android.graphics.Paint;
import android.app.Activity;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.widget.Toast;




public class gpstestActivity extends Activity

{
    public LocationManager mlocManager;
    public LocationListener mlocListener;
    public boolean isFirstRun=true;
    protected final Paint mPaint = new Paint();
    private MapView myMap;
    private MyLocationOverlay myLocOverlay;




/** Called when the activity is first created. */






public void onCreate(Bundle savedInstanceState)

{

super.onCreate(savedInstanceState);


setContentView(R.layout.main);

gpsEnable();
setMap();
initMyLocation();


}




public void setMap(){
    MapView map = (MapView) findViewById(R.id.map);
    map.setTileSource(TileSourceFactory.MAPNIK);

    map.setBuiltInZoomControls(true);
    map.setMultiTouchControls(true);
    map.getController().setZoom(16);
    map.getController().setCenter(new GeoPoint(30266000,-97739000));

}

private void initMyLocation() {
    myLocOverlay = new MyLocationOverlay(this,myMap);
    myLocOverlay.enableMyLocation();
    myMap.getoverlays().add(myLocOverlay);

}



public void gpsEnable (){
    mlocManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);

    mlocListener = new MyLocationListener();

    mlocManager.requestLocationUpdates( LocationManager.GPS_PROVIDER,10,50,mlocListener);
}

public void gpsdisable(){
    mlocManager.removeUpdates(mlocListener);}


/* Class My Location Listener */

public class MyLocationListener implements LocationListener

{

@Override

public void onLocationChanged(Location loc)

{

loc.getLatitude();

loc.getLongitude();
double longi=loc.getLongitude();
double lati=loc.getLatitude();
MapView map = (MapView) findViewById(R.id.map);
map.getController().setCenter(new GeoPoint(lati,longi));

String Text=\"My current location is: \" +

\"Latitud = \" + loc.getLatitude() +

\"Longitud = \" + loc.getLongitude();

Toast.makeText( getApplicationContext(),Text,Toast.LENGTH_SHORT).show();
//initMyLocation();

}

@Override

public void onProviderdisabled(String provider)

{

Toast.makeText( getApplicationContext(),\"Gps disabled\",Toast.LENGTH_SHORT ).show();
mlocManager.removeUpdates(mlocListener);
}


@Override

public void onProviderEnabled(String provider)

{

Toast.makeText( getApplicationContext(),\"Gps Enabled\",Toast.LENGTH_SHORT).show();

}

@Override

public void onStatusChanged(String provider,int status,Bundle extras)

{
    Toast.makeText( getApplicationContext(),\"Status changed\",Toast.LENGTH_SHORT).show();

}
}/* End of Class MyLocationListener */





@Override
public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.menu,menu);
    return true;

}
@Override
public boolean onoptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case R.id.beenden:  mlocManager.removeUpdates(mlocListener);}


        return true;
    }




protected void onPause(){
    Toast.makeText( getApplicationContext(),\"On Pause\",Toast.LENGTH_SHORT).show();
    gpsdisable();
    isFirstRun=false;

    super.onPause();

}

protected void onDestroy(){
    Toast.makeText( getApplicationContext(),\"Destroyed\",Toast.LENGTH_SHORT).show();
    gpsdisable();
    super.onDestroy();

}

protected void onResume(){
    if (isFirstRun==false){gpsEnable();}
    Toast.makeText( getApplicationContext(),\"Resumed\",Toast.LENGTH_SHORT).show();

    super.onResume();
}







}/* Ende Activity */
每当我调用initMyLocation时,应用程序就会崩溃(模拟器和设备上的机器人)。当我尝试实现MiniMap时也会发生同样的情况。我所做的工作与Osmdroid存储库中的SampleExtensive示例完全相同。我究竟做错了什么? 我的AndroidManifest.xml提供了我认为的所有必需权限
<?xml version=\"1.0\" encoding=\"utf-8\"?>
    
<application android:icon=\"@drawable/icon\" android:label=\"@string/app_name\">
    <activity android:name=\".gpstestActivity\"
              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>
<uses-permission android:name=\"android.permission.ACCESS_FINE_LOCATION\"></uses-permission>
<uses-permission android:name=\"android.permission.INTERNET\"></uses-permission>  
<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\" />
    

解决方法

        在您的setMap()中,您从未设置 myMap =地图; 因此,在initMyLocation中,将为pMapView参数传递null。     ,        要使用位置,您必须在AndroidManifest.xml中包含以下内容:
<uses-permission android:name=\"android.permission.ACCESS_COARSE_LOCATION\"></uses-permission>
<uses-permission android:name=\"android.permission.ACCESS_FINE_LOCATION\"></uses-permission>
    

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?