Android 我没有';我无法在地图视图中获取纬度和经度?

Android 我没有';我无法在地图视图中获取纬度和经度?,android,android-layout,android-manifest,Android,Android Layout,Android Manifest,在这里,我编写了在mapview活动中获取lat和long值的代码,但是它将被强制关闭。是否有任何修改或其他方法来获取这些值 public class GpsoverlayActivity extends Activity { /** Called when the activity is first created. */ MapView map; MapController mc; GeoPoint gp; @Override public

在这里,我编写了在mapview活动中获取lat和long值的代码,但是它将被强制关闭。是否有任何修改或其他方法来获取这些值

public class GpsoverlayActivity extends Activity {
    /** Called when the activity is first created. */
    MapView map;
    MapController mc;
    GeoPoint gp;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        map=(MapView)findViewById(R.id.mapView);
        mc=map.getController();
        mc.setCenter(gp);
        mc.setZoom(20);
    }
        protected boolean onTap(int i) {
        OverlayItem item=getItem(i);
        GeoPoint geo=item.getPoint();
        Point pt=map.getProjection().toPixels(geo, null);
        String message=String.format("Lat: %f | Lon: %f\nX: %d | Y %d",
        geo.getLatitudeE6()/1000000.0,
        geo.getLongitudeE6()/1000000.0,
        pt.x, pt.y);
        Toast.makeText(getApplicationContext(),
        message,
        Toast.LENGTH_LONG).show();
        return(true);
        }
    private OverlayItem getItem(int i) {
        // TODO Auto-generated method stub
        return null;
    }


} 
这是我上面代码的日志

12-22 14:50:33.912: D/ddm-heap(834): Got feature list request
12-22 14:50:34.252: E/ActivityThread(834): Failed to find provider info for com.google.settings
12-22 14:50:34.271: E/ActivityThread(834): Failed to find provider info for com.google.settings
12-22 14:50:34.352: E/ActivityThread(834): Failed to find provider info for com.google.settings
12-22 14:50:34.802: D/AndroidRuntime(834): Shutting down VM
12-22 14:50:34.812: W/dalvikvm(834): threadid=3: thread exiting with uncaught exception (group=0x4001b188)
12-22 14:50:34.812: E/AndroidRuntime(834): Uncaught handler: thread main exiting due to uncaught exception
12-22 14:50:34.841: E/AndroidRuntime(834): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.emigostec/com.emigostec.GmapviewActivity}: java.lang.NullPointerException
12-22 14:50:34.841: E/AndroidRuntime(834):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2496)
12-22 14:50:34.841: E/AndroidRuntime(834):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2512)
12-22 14:50:34.841: E/AndroidRuntime(834):  at android.app.ActivityThread.access$2200(ActivityThread.java:119)
12-22 14:50:34.841: E/AndroidRuntime(834):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1863)
12-22 14:50:34.841: E/AndroidRuntime(834):  at android.os.Handler.dispatchMessage(Handler.java:99)
12-22 14:50:34.841: E/AndroidRuntime(834):  at android.os.Looper.loop(Looper.java:123)
12-22 14:50:34.841: E/AndroidRuntime(834):  at android.app.ActivityThread.main(ActivityThread.java:4363)
12-22 14:50:34.841: E/AndroidRuntime(834):  at java.lang.reflect.Method.invokeNative(Native Method)
12-22 14:50:34.841: E/AndroidRuntime(834):  at java.lang.reflect.Method.invoke(Method.java:521)
12-22 14:50:34.841: E/AndroidRuntime(834):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
12-22 14:50:34.841: E/AndroidRuntime(834):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
12-22 14:50:34.841: E/AndroidRuntime(834):  at dalvik.system.NativeStart.main(Native Method)
12-22 14:50:34.841: E/AndroidRuntime(834): Caused by: java.lang.NullPointerException
12-22 14:50:34.841: E/AndroidRuntime(834):  at com.emigostec.GmapviewActivity.onCreate(GmapviewActivity.java:24)
12-22 14:50:34.841: E/AndroidRuntime(834):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
12-22 14:50:34.841: E/AndroidRuntime(834):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2459)
12-22 14:50:34.841: E/AndroidRuntime(834):  ... 11 more
12-22 14:50:34.872: I/dalvikvm(834): threadid=7: reacting to signal 3
12-22 14:50:35.123: W/dalvikvm(834): threadid=7: spin on suspend #0 threadid=17 (h=1283560)
12-22 14:50:35.123: W/dalvikvm(834): dumping state: process - 834
12-22 14:50:35.123: I/dalvikvm(834): "Signal Catcher" daemon prio=5 tid=7 RUNNABLE
12-22 14:50:35.123: I/dalvikvm(834):   | group="system" sCount=0 dsCount=0 s=N obj=0x44bf51e8 self=0x133828
12-22 14:50:35.123: I/dalvikvm(834):   | sysTid=837 nice=0 sched=0/0 cgrp=default handle=1238520
12-22 14:50:35.123: I/dalvikvm(834):   at dalvik.system.NativeStart.run(Native Method)
12-22 14:50:35.123: I/dalvikvm(834): "TrafficService" prio=1 tid=17 RUNNABLE
12-22 14:50:35.123: I/dalvikvm(834):   | group="main" sCount=1 dsCount=0 s=N obj=0x44c184b8 self=0x11ec98
12-22 14:50:35.123: I/dalvikvm(834):   | sysTid=842 nice=19 sched=0/0 cgrp=bg_non_interactive handle=1283560
12-22 14:50:35.123: I/dalvikvm(834): DumpRunning: Thread at 0x11ec98 has no curFrame (threadid=17)
12-22 14:50:35.162: W/dalvikvm(834): threadid=7: spin on suspend resolved in 293 msec
12-22 14:50:35.321: I/dalvikvm(834): Wrote stack trace to '/data/anr/traces.txt'

我不知道您在这里到底想做什么,但我可以看到一些错误:

  • 类声明错误(必须使用MapActivity而不是Activity):
公共类GPSoverlayaActivity扩展了MapActivity

  • 关于gp,您没有在其中输入值,请按如下方式插入任何纬度和经度:

    GeoPoint gp= new GeoPoint((int)(26.2*1.0E6), (int)(52.6*1.0E6));
    
如果您试图在地图上进行标记,我建议您创建另一个类extends ItemizedOverlay,如下结构所示:

public class MapViewItemizedOverlay extends ItemizedOverlay {

    private ArrayList<OverlayItem> mOverlays = new ArrayList<OverlayItem>();
    private Context mContext;

    public MapViewItemizedOverlay(Drawable defaultMarker, Context context) {
        super(boundCenterBottom(defaultMarker));
        // TODO Auto-generated constructor stub
         mContext = context;
    }

    @Override
    protected OverlayItem createItem(int i) {
        return mOverlays.get(i);
    }


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

    public void addOverlay(OverlayItem overlay) {
        mOverlays.add(overlay);
        populate();
    }


    @Override
    public boolean onTap(int index)
    {   
        //get the marker on the map from here
        OverlayItem item = mOverlays.get(index);
        OverlayItem item=getItem(i);
        GeoPoint geo=item.getPoint();
        Point pt=map.getProjection().toPixels(geo, null);
        String message=String.format("Lat: %f | Lon: %f\nX: %d | Y %d",
        geo.getLatitudeE6()/1000000.0,
        geo.getLongitudeE6()/1000000.0,
        pt.x, pt.y);
        Toast.makeText(getApplicationContext(),
        message,
        Toast.LENGTH_LONG).show();
    return true;
    }
公共类MapViewItemizeOverlay扩展了ItemizeOverlay{
private ArrayList mOverlays=new ArrayList();
私有上下文;
公共MapViewItemizeOverlay(可绘制的默认标记,上下文){
super(boundCenterBottom(defaultMarker));
//TODO自动生成的构造函数存根
mContext=上下文;
}
@凌驾
受保护的OverlayItem createItem(int i){
返回mOverlays.get(i);
}
@凌驾
公共整数大小(){
//TODO自动生成的方法存根
返回mOverlays.size();
}
公共void addOverlay(OverlayItem overlay){
添加(覆盖);
填充();
}
@凌驾
公共布尔onTap(整数索引)
{   
//从这里得到地图上的标记
OverlayItem item=mOverlays.get(索引);
OverlayItem item=getItem(i);
GeoPoint geo=item.getPoint();
点pt=map.getProjection().toPixels(geo,null);
String message=String.format(“Lat:%f | Lon:%f\nX:%d | Y%d”,
geo.getLatitudeE6()/1000000.0,
geo.getLongitudeE6()/1000000.0,
第x部分,第y部分);
Toast.makeText(getApplicationContext(),
消息
Toast.LENGTH_LONG).show();
返回true;
}
并在MapActivity中这样使用它:

MapView mapView = (MapView) findViewById(R.id.mapview);
MapController mc = mapView.getController();
List<Overlay> mapOverlays = mapView.getOverlays();
//add any icon here for the marker
Drawable drawable = MainActivity.this.getResources().getDrawable(R.drawable.icon);
MapViewItemizedOverlay itemizedOverlay = new MapViewItemizedOverlay(drawable,this);
//insert any lat and lng as integers here
GeoPoint point1 = new GeoPoint(lat,lng);
OverlayItem overlayitem1 = new OverlayItem(point1, "Info", "You are here!" );
itemizedOverlay.addOverlay(overlayitem1);
mapOverlays.add(itemizedOverlay);
mc.animateTo(point1);
MapView MapView=(MapView)findViewById(R.id.MapView);
MapController mc=mapView.getController();
List mapOverlays=mapView.getOverlays();
//在此处为标记添加任何图标
Drawable Drawable=MainActivity.this.getResources().getDrawable(R.Drawable.icon);
MapViewItemizedOverlay itemizedOverlay=新MapViewItemizedOverlay(可绘制,此);
//在此处插入任何lat和lng作为整数
地质点1=新的地质点(纬度、液化天然气);
OverlayItem overlayitem1=新的OverlayItem(第1点,“信息”,“您在这里!”);
itemizedOverlay.addOverlay(overlayitem1);
添加(itemizedOverlay);
司令官(第一点),;

当您发布与崩溃相关的问题时,请也发布您的logcat输出。您是在模拟器中还是在真实设备中进行尝试?是的……我也发布了logcat@vikramit的GeoPoint gp,它将为空。。。