我在m android app中有地图,但效果不好。我花了最后两个小时逐行查看代码,但我不知道是什么问题。我在教程http://mobiforge.com/developing/story/using-google-maps-android中完成了所有工作。我在清单中设置使用谷歌地图。地图显示标记,不显示地图(而不是在背景中是网格线),缩放控件在几秒后消失而不返回。有什么问题?
这是活动类。
package com.roomate.www;
import java.util.List;
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.MapView.LayoutParams;
import com.google.android.maps.Overlay;
import android.view.View;
import android.widget.LinearLayout;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Point;
import android.os.Bundle;
import android.util.Log;
public class Location extends MapActivity{
MapView mapView;
MapController mc;
GeoPoint p;
class MapOverlay extends com.google.android.maps.Overlay
{
@Override
public boolean draw(Canvas canvas, MapView mapView,
boolean shadow, long when)
{
super.draw(canvas, mapView, shadow);
//---translate the GeoPoint to screen pixels---
Point screenPts = new Point();
mapView.getProjection().toPixels(p, screenPts);
//---add the marker---
Bitmap bmp = BitmapFactory.decodeResource(
getResources(), R.drawable.marker);
canvas.drawBitmap(bmp, screenPts.x, screenPts.y-50, null);
return true;
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.map_result);
mapView = (MapView) findViewById(R.id.mapView);
mapView.setStreetView(true);
LinearLayout zoomLayout = (LinearLayout)findViewById(R.id.zoom);
View zoomView = mapView.getZoomControls();
zoomLayout.addView(zoomView,
new LinearLayout.LayoutParams(
LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT));
mapView.displayZoomControls(true);
mc = mapView.getController();
String coordinates[] = {"1.352566007", "103.78921587"};
double lat = Double.parseDouble(coordinates[0]);
double lng = Double.parseDouble(coordinates[1]);
p = new GeoPoint(
(int) (lat * 1E6),
(int) (lng * 1E6));
mc.animateTo(p);
mc.setZoom(17);
MapOverlay mapOverlay = new MapOverlay();
List<Overlay> listOfOverlays = mapView.getOverlays();
listOfOverlays.clear();
listOfOverlays.add(mapOverlay);
mapView.invalidate();
}
@Override
protected boolean isRouteDisplayed() {
return false;
}
}
这是地图的布局。
<LinearLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
>
<LinearLayout
android:layout_gravity="left"
android:gravity="left"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<ImageButton
android:id="@+id/imbReturnMap"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:fitsSystemWindows="true"
android:src="@drawable/close"
android:layout_gravity="left">
</ImageButton>
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="right"
android:layout_gravity="right">
<ImageButton
android:id="@+id/imbCloseM"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:fitsSystemWindows="true"
android:src="@drawable/close"
android:layout_gravity="right">
</ImageButton>
</LinearLayout>
</LinearLayout>
<RelativeLayout
android:id="@+id/mainlayout"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<com.google.android.maps.MapView
android:id="@+id/mapView"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:apiKey="0WR3Cl0evv0U6G2xH9ZnvEFYbDiSDUu_GRovTUQ"
/>
<LinearLayout android:id="@+id/zoom"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
/>
</RelativeLayout>
</LinearLayout>
答案 0 :(得分:3)
如屏幕截图所示,您的设备或模拟器没有任何连接。零条图标告诉你这个。
如果这是一个模拟器,它可能无法在启动时检测到Internet,或者您按[F8]可以关闭连接。重新启动模拟器,幸运的是,您将获得正常的两个模拟信号强度条。
在等待模拟器重新启动时,还要确认您在清单中持有INTERNET
权限。这对模拟器对Internet的整体访问没有影响 - 但是,缺少该权限也会导致您看到的行为。
答案 1 :(得分:1)
它是api密钥的问题。使用MD5密钥创建一个新的api密钥。这对我有帮助
https://developers.google.com/maps/documentation/android/v1/maps-api-signup?hl=sv-SE
答案 2 :(得分:0)