【发布时间】:2011-11-18 02:11:42
【问题描述】:
我从这个链接http://developer.android.com/resources/tutorials/views/hello-mapview.html关注了谷歌的地图视图教程
我已经完成了关于创建地图活动的第一个,但是在添加叠加层时遇到了问题。以下是源代码:
package rs.iz.stevy.wifi;
import java.util.ArrayList;
import android.graphics.drawable.Drawable;
import android.app.AlertDialog;
import android.content.Context;
import com.google.android.maps.ItemizedOverlay;
import com.google.android.maps.OverlayItem;
public class Overlay extends ItemizedOverlay {
public Overlay(Drawable defaultMarker, Context context) {
super(defaultMarker);
Context mContext;
mContext = context;
}
private ArrayList<OverlayItem>mOverlays= new ArrayList<OverlayItem>();
public Overlay(Drawable defaultMarker) {
super(boundCenterBottom(defaultMarker));
}
public void addOverlay(OverlayItem overlay) {
mOverlays.add(overlay);
populate();
}
@Override
protected OverlayItem createItem(int i) {
return mOverlays.get(i); }
@Override
public int size() {
return mOverlays.size();
}
@Override
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;
}
}
错误出现在这一行: AlertDialog.Builder 对话框 = new AlertDialog.Builder(mContext); Eclipse 显示 mContext 无法解析为变量。
这是 Activity 类:
rs.iz.stevy.wifi;
import java.util.List;
import com.google.android.maps.GeoPoint;
import com.google.android.maps.ItemizedOverlay;
import com.google.android.maps.MapActivity;
import com.google.android.maps.MapView;
import com.google.android.maps.Overlay;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
public class WiFiKupacicaActivity extends MapActivity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
MapView mapa= (MapView) findViewById(R.id.Mapa1);
mapa.setBuiltInZoomControls(true);
mapa.setSatellite(true);
GeoPoint initGeoPoint = mapa.getMapCenter();
List<Overlay> mapOverlays = mapa.getOverlays();
Drawable drawable = this.getResources().getDrawable(R.drawable.kupacica);
Overlay itemizedoverlay = new Overlay (drawable);
}
@Override
protected boolean isRouteDisplayed() {
// TODO Auto-generated method stub
return false;
}
Eclipse 显示错误无法在此行实例化 Overlay: Overlay itemizedoverlay = new Overlay (drawable);
如果您在这里看到任何可以轻松修复的错误,请回答,因为这是我第一次尝试编写 Android 应用程序。
【问题讨论】:
-
@ 问题在于您用于添加叠加层的类名称,因此首先您需要将类叠加层的名称更改为您喜欢的任何其他东西 MapOverlay 然后将其扩展为 ItemizedOverlay 。
标签: android overlay android-mapview