地图在android中不起作用
我正在使用以下地图类在我的android应用程序中使用地图地图在android中不起作用,android,google-maps,android-emulator,android-maps,Android,Google Maps,Android Emulator,Android Maps,我正在使用以下地图类在我的android应用程序中使用地图 package com.wglxy.example.dash1; import java.io.IOException; import java.util.List; import android.app.AlertDialog; import android.content.Intent; import android.location.Address; import android.location.Geocoder; imp
package com.wglxy.example.dash1;
import java.io.IOException;
import java.util.List;
import android.app.AlertDialog;
import android.content.Intent;
import android.location.Address;
import android.location.Geocoder;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageButton;
import android.widget.TextView;
import com.google.android.maps.GeoPoint;
import com.google.android.maps.MapActivity;
import com.google.android.maps.MapController;
import com.google.android.maps.MapView;
import com.google.android.maps.Overlay;
public class map extends MapActivity {
private MapView mapview;
private Geocoder geocoder;
private Button map1;
String[] myadd;
private int len;
private GeoPoint p;
private MapController controller;
private TextView helloText;
private List<Address> addresses;
private int i;
private String[] mynames;
private ImageButton info;
private String[] citysearch7 = new String[1];
private ImageButton search;
private ImageButton home;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.map);
Intent intent = getIntent();
myadd = intent.getStringArrayExtra("strings");
mynames = intent.getStringArrayExtra("names");
info = (ImageButton) findViewById(R.id.info);
search = (ImageButton) findViewById(R.id.search1);
home = (ImageButton) findViewById(R.id.hom);
len = myadd.length;
System.out.println("Length=" + len);
mapview = (MapView) findViewById(R.id.mapview);
mapview.setBuiltInZoomControls(true);
geocoder = new Geocoder(this);
// check();
while (i != len) {
try {
System.out.println("Coming inside try catch and adress="
+ myadd[i]);
addresses = geocoder
.getFromLocationName(myadd[i].toString(), 1);
} catch (IOException e) {
System.out.println("Catching");
e.printStackTrace();
}
if (addresses.size() > 0) {
p = new GeoPoint((int) (addresses.get(0).getLatitude() * 1E6),
(int) (addresses.get(0).getLongitude() * 1E6));
controller = mapview.getController();
controller.setZoom(12);
MapOverlay mapOverlay = new MapOverlay(map.this, p, mynames[i]);
List<Overlay> listOfOverlays = mapview.getOverlays();
listOfOverlays.add(mapOverlay);
controller.animateTo(p, new Runnable() {
public void run() {
controller.setZoom(12);
}
});
mapview.invalidate();
} else {
AlertDialog.Builder adb = new AlertDialog.Builder(map.this);
adb.setTitle("Google Map");
adb.setMessage("Please Provide the Proper Place");
adb.setPositiveButton("Close", null);
adb.show();
}
i++;
}
}
void check() {
info.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
startActivity(new Intent(getApplicationContext(),
AboutActivity.class));
}
});
home.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent intent = new Intent(getApplicationContext(), start.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
}
});
search.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent intent = new Intent(getApplicationContext(),
search.class);
startActivity(intent);
}
});
}
@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.bloodmenu:
startActivity(new Intent(getApplicationContext(), search.class));
break;
case R.id.bankmenu:
citysearch7[0] = "";
Intent intent = new Intent(getApplicationContext(),
searchbank.class);
intent.putExtra("search", citysearch7);
startActivity(intent);
break;
case R.id.updatemenu:
startActivity(new Intent(getApplicationContext(), update.class));
break;
case R.id.registermenu:
Intent intent1 = new Intent(getApplicationContext(), register.class);
Bundle b = new Bundle();
b.putString("name", "");
b.putString("house", "");
b.putString("street", "");
b.putString("city", "");
b.putString("blood", "");
b.putString("phone", "");
b.putString("file", "register");
intent1.putExtras(b);
startActivity(intent1);
break;
}
return true;
}
@Override
protected boolean isRouteDisplayed() {
// TODO Auto-generated method stub
return false;
}
}
请考虑我已经使用过的打印语句,谁能帮助我理解我的问题?我还更改了我的密钥并进行了更新,但没有成功。我的仿真器有什么问题吗?我也尝试过创建一个新的仿真器,但仍然不起作用。另外,我已经注释了调用check方法的行,如果我不注释它,是否有问题?
-请帮助…提前感谢。您应该搜索错误。。您会发现许多类似的错误 及 中规定,如果没有找到任何匹配项,地理编码器可以返回null
在一个像弗兰肯斯坦提到的实际设备上试试。或者,如果您使用的是仿真器,请确保它使用google api。如果您的最低SDK设置允许,请尝试在api level 7仿真器上运行,它应该可以正常工作,com.wglxy.example.dash1.map.onCreatemap.java:75该行导致空指针。检查@blessenm第75行:如果addresses.size>0{AddrRess似乎为空…但是为什么?我尝试了你提供的链接,在下面的链接中我发现了我的确切问题。我尝试了comment21中给出的解决方案,但对我无效。你能建议我如何继续我的android应用程序开发吗?你的应用程序和代码还可以…只需实际运行一次即可l设备而不是emulatorI,它在实际设备上运行,但是你能给我建议一些模拟器的解决方案吗,因为我没有自己的实际设备。嗯……可能你必须尝试使用较低的android版本,如1.6emulator/project api level,我想它会工作的。我试图通过呃,eclipse,但它没有启动。它给出如下错误…emulator:错误:未知的皮肤名称'WVGA800'我不知道我的所有平台都已正确下载。
D/dalvikvm( 466): GC_FOR_MALLOC freed 8171 objects / 631112 bytes in 54ms
D/dalvikvm( 466): GC_FOR_MALLOC freed 6139 objects / 371288 bytes in 55ms
I/System.out( 466): Length=3
I/System.out( 466): Coming inside try catch and adress=Surya Nagar Agra
I/System.out( 466): Catching
W/System.err( 466): java.io.IOException: Service not Available
W/System.err( 466): at android.location.Geocoder.getFromLocationName(Geocoder.java:159)
W/System.err( 466): at com.wglxy.example.dash1.map.onCreate(map.java:68)
W/System.err( 466): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
W/System.err( 466): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
W/System.err( 466): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
W/System.err( 466): at android.app.ActivityThread.access$2300(ActivityThread.java:125)
W/System.err( 466): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
W/System.err( 466): at android.os.Handler.dispatchMessage(Handler.java:99)
W/System.err( 466): at android.os.Looper.loop(Looper.java:123)
W/System.err( 466): at android.app.ActivityThread.main(ActivityThread.java:4627)
W/System.err( 466): at java.lang.reflect.Method.invokeNative(Native Method)
W/System.err( 466): at java.lang.reflect.Method.invoke(Method.java:521)
W/System.err( 466): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
W/System.err( 466): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
W/System.err( 466): at dalvik.system.NativeStart.main(Native Method)
D/AndroidRuntime( 466): Shutting down VM
W/dalvikvm( 466): threadid=1: thread exiting with uncaught exception (group=0x4001d800)
E/AndroidRuntime( 466): FATAL EXCEPTION: main
E/AndroidRuntime( 466): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.wglxy.example.dash1/com.wglxy.example.dash1.map}: java.lang.NullPointerException
E/AndroidRuntime( 466): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)
E/AndroidRuntime( 466): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
E/AndroidRuntime( 466): at android.app.ActivityThread.access$2300(ActivityThread.java:125)
E/AndroidRuntime( 466): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
E/AndroidRuntime( 466): at android.os.Handler.dispatchMessage(Handler.java:99)
E/AndroidRuntime( 466): at android.os.Looper.loop(Looper.java:123)
E/AndroidRuntime( 466): at android.app.ActivityThread.main(ActivityThread.java:4627)
E/AndroidRuntime( 466): at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime( 466): at java.lang.reflect.Method.invoke(Method.java:521)
E/AndroidRuntime( 466): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
E/AndroidRuntime( 466): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
E/AndroidRuntime( 466): at dalvik.system.NativeStart.main(Native Method)
E/AndroidRuntime( 466): Caused by: java.lang.NullPointerException
E/AndroidRuntime( 466): at com.wglxy.example.dash1.map.onCreate(map.java:75)
E/AndroidRuntime( 466): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
E/AndroidRuntime( 466): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
E/AndroidRuntime( 466): ... 11 more
W/ActivityManager( 70): Force finishing activity com.wglxy.example.dash1/.map
W/ActivityManager( 70): Force finishing activity com.wglxy.example.dash1/.search
W/ActivityManager( 70): Activity pause timeout for HistoryRecord{44efd6a8 com.wglxy.example.dash1/.map}
W/ActivityManager( 70): Launch timeout has expired, giving up wake lock!
W/ActivityManager( 70): Activity idle timeout for HistoryRecord{44ed9bb8 com.wglxy.example.dash1/.start}
W/ActivityManager( 70): Activity destroy timeout for HistoryRecord{44edc6e8 com.wglxy.example.dash1/.search}
W/ActivityManager( 70): Activity destroy timeout for HistoryRecord{44efd6a8 com.wglxy.example.dash1/.map}
D/dalvikvm( 275): GC_EXPLICIT freed 1903 objects / 139672 bytes in 196ms
D/dalvikvm( 407): GC_EXPLICIT freed 119 objects / 9440 bytes in 130ms
D/dalvikvm( 416): GC_EXPLICIT freed 635 objects / 50232 bytes in 145ms
D/dalvikvm( 196): GC_EXPLICIT freed 808 objects / 45672 bytes in 176ms