Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android MapView可以在emulator上工作,但不能在手机上工作_Android_Google Maps_Grid_Android Mapview - Fatal编程技术网

Android MapView可以在emulator上工作,但不能在手机上工作

Android MapView可以在emulator上工作,但不能在手机上工作,android,google-maps,grid,android-mapview,Android,Google Maps,Grid,Android Mapview,我在我的应用程序上正确安装了GoogleMapAPI,所有这些都可以在模拟器上正常工作。但是当我把它转移到我的手机上时,它就不再工作了(有一个网格的东西),我找不到哪里出了问题 public class Main extends MapActivity { /** Called when the activity is first created. */ MapView map ; @Override public void onCreate(Bundle sav

我在我的应用程序上正确安装了GoogleMapAPI,所有这些都可以在模拟器上正常工作。但是当我把它转移到我的手机上时,它就不再工作了(有一个网格的东西),我找不到哪里出了问题

public class Main extends MapActivity {
    /** Called when the activity is first created. */
    MapView map ;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        map = (MapView)findViewById(R.id.mapview);
        map.setSatellite(true);
        List<Overlay> mapOverlays = map.getOverlays();
        Drawable drawable = this.getResources().getDrawable(R.drawable.pins);
        HelloItem itemizedoverlay = new HelloItem(drawable, this);
        GeoPoint point = new GeoPoint(19240000,-99120000);
        OverlayItem overlayitem = new OverlayItem(point, "Hola, Mundo!", "I'm in Mexico City!");
        itemizedoverlay.addOverlay(overlayitem);
        mapOverlays.add(itemizedoverlay);
        map.setBuiltInZoomControls(true);
    }
    @Override
    protected boolean isRouteDisplayed() {
        // TODO Auto-generated method stub
        return false;
    }
}
public类主活动{
/**在首次创建活动时调用*/
地图视图;
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
map=(MapView)findViewById(R.id.MapView);
地图.固定卫星(真);
List mapOverlays=map.getOverlays();
Drawable Drawable=this.getResources().getDrawable(R.Drawable.pins);
HelloItem ItemizeOverlay=新HelloItem(可绘制,本);
地质点=新的地质点(19240000,-99120000);
OverlayItem OverlayItem=新的OverlayItem(指向“你好,芒多!”,“我在墨西哥城!”);
itemizedoverlay.addOverlay(overlayitem);
添加(itemizedoverlay);
map.setBuiltInZoomControls(真);
}
@凌驾
受保护的布尔值isRouteDisplayed(){
//TODO自动生成的方法存根
返回false;
}
}

public类HelloItem扩展了ItemizedOverlay{
private ArrayList mOverlays=new ArrayList();
私有上下文;
公共HelloItem(可绘制默认标记){
super(boundCenterBottom(defaultMarker));
}
公共HelloItem(可绘制的defaultMarker,上下文){
super(boundCenterBottom(defaultMarker));
mContext=上下文;
}
@凌驾
受保护的OverlayItem createItem(int i){
//TODO自动生成的方法存根
返回mOverlays.get(i);
}
公共void addOverlay(OverlayItem overlay){
添加(覆盖);
填充();
}
@凌驾
公共整数大小(){
返回mOverlays.size();
}
受保护的布尔onTap(整数索引){
OverlayItem item=mOverlays.get(索引);
AlertDialog.Builder dialog=新建AlertDialog.Builder(mContext);
setTitle(item.getTitle());
setMessage(item.getSnippet());
dialog.show();
返回true;
}

}发生这种情况是因为您需要使用不同的.keystore,一个用于emulator(调试),一个用于设备(发布)。当您从Google获得debug.keystore MD5&Map API密钥时,请遵循相同的过程。这一次,您需要为您自己的.keystore获取这两个信息,以便在设备上发布。然后更改地图布局中的地图API键,地图将显示在您的设备上。

这是一个重复的问题。请看类似的问题:我做了所有这些,它在eclipse上运行良好,但不是在我的手机上。是的,我做了,但我要把我所有的代码。这可能是个骗局。当您没有有效的maps API密钥时会发生这种情况。非常常见的问题。如果瓷砖没有显示,那么api键是错误的。如果导出应用程序,则它必须具有发布api密钥。
public class HelloItem extends ItemizedOverlay {
private ArrayList<OverlayItem> mOverlays = new ArrayList<OverlayItem>();
private Context mContext;

public HelloItem(Drawable defaultMarker) {
    super(boundCenterBottom(defaultMarker));
}
public HelloItem(Drawable defaultMarker, Context context) {
    super(boundCenterBottom(defaultMarker));
    mContext = context;
    }

@Override
protected OverlayItem createItem(int i) {
    // TODO Auto-generated method stub
      return mOverlays.get(i);
}
public void addOverlay(OverlayItem overlay) {
    mOverlays.add(overlay);
    populate();
}
@Override
public int size() {
      return mOverlays.size();
}
protected boolean onTap(int index) {
      OverlayItem item = mOverlays.get(index);
      AlertDialog.Builder dialog = new AlertDialog.Builder(mContext);
      dialog.setTitle(item.getTitle());
      dialog.setMessage(item.getSnippet());
      dialog.show();
      return true;
    }