技术开发 频道

使用Android Google Map开发LBS应用

  步骤3 创建自定义的overlay类

  在这个步骤中,由于我们已经引入了第三方类库,因此在创建地图信息的自定义图层类时,可以继承这个第三方类库已经设计好的BalloonItemizedOverlay类,从而减轻很多的编码工作。现在进行相关操作:

步骤3 创建自定义的overlay类

  在工程的src目录下,找到com.shawnbe.mallfinder包,新建立一个类,如下图:

  由于要继承BalloonItemizedOverlay类,所以修改eclipse生成的代码为如下:

  public class MallOverlay extends BalloonItemizedOverlay

  我们同时再引入如下的一些类:

import android.graphics.drawable.Drawable;
import com.google.android.maps.MapView;
import com.google.android.maps.OverlayItem;
import com.readystatesoftware.mapviewballoons.BalloonItemizedOverlay;

  完整的MallOverlay类代码如下:

package com.shawnbe.mallfinder;
import android.graphics.drawable.Drawable;
import com.google.android.maps.MapView;
import com.google.android.maps.OverlayItem;
import com.readystatesoftware.mapviewballoons.BalloonItemizedOverlay;
  
public class MallOverlay extends BalloonItemizedOverlay<OverlayItem> {
  
    
public MallOverlay(Drawable defaultMarker, MapView mapView) {
        super(defaultMarker, mapView);
        
// TODO Auto-generated constructor stub
    }
  
    @Override
    protected OverlayItem createItem(
int i) {
        
// TODO Auto-generated method stub
        return
null;
    }
  
    @Override
    
public int size() {
        
// TODO Auto-generated method stub
        return
0;
    }
  
}

  上面是一个框架结构,现在要往其中增加一些实际的方法代码。首先,先声明一些全局变量,如下:

private Context mContext;
private ArrayList<OverlayItem> malls = new ArrayList<OverlayItem>();
private Location currentLocation;
然后修改如下代码:
    
public MallOverlay(Drawable defaultMarker, MapView mapView) {
    super(boundCenter(defaultMarker),mapView);
    boundCenter(defaultMarker);
    mContext
= mapView.getContext();
}
  
@Override
protected OverlayItem createItem(
int i) {
    
// TODO Auto-generated method stub
    return malls.get(i);
}
  
@Override
    
public int size() {
    
// TODO Auto-generated method stub
    return malls.size();
}
  
public void addOverlay(OverlayItem overlay) {
    malls.add(overlay);
    populate();
}
  
@Override
protected
boolean onBalloonTap(int index, OverlayItem item) {
    Toast.makeText(mContext,
"Overlay Item " + index + " tapped!",
            Toast.LENGTH_LONG).show();
    return
true;
}

  在上面的程序中,addOverlay方法用于向已有的地图层List中增加一个OverlayItem实例对象,而onBalloonTap方法中,则在当用户点某一个地图上的标注时弹出显示。

0
相关文章