android - 在android中动态填充 map

标签 android dynamic dictionary overlay point

所以我有一个 mapView,我想根据数据库动态填充它。我可以单独完成每个地理点,但出于某种原因,当我尝试全部完成时,它不会在 map 上显示这些点。如果有人有建议,请告诉我:-)

public class FieldTrip extends MapActivity {
  private MapView map=null;
  private MyLocationOverlay me=null;
  private String theLat;
  private String theLong;
  private Double theDLat;
  private Double theDLong;


  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.maptastic);

    map=(MapView)findViewById(R.id.mapView);

    map.getController().setCenter(getPoint(40.76793169992044,
                                            -73.98180484771729));
    map.getController().setZoom(17);
    map.setBuiltInZoomControls(true);

    Drawable marker=getResources().getDrawable(R.drawable.supaaaa);

    marker.setBounds(0, 0, marker.getIntrinsicWidth(),
                            marker.getIntrinsicHeight());

    map.getOverlays().add(new SitesOverlay(marker));

    me=new MyLocationOverlay(this, map);
    map.getOverlays().add(me);
  }

  @Override
  public void onResume() {
    super.onResume();

    me.enableCompass();
  }   

  @Override
  public void onPause() {
    super.onPause();

    me.disableCompass();
  }   

  @Override
  protected boolean isRouteDisplayed() {
    return(false);
  }

  @Override
  public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_S) {
      map.setSatellite(!map.isSatellite());
      return(true);
    }
    else if (keyCode == KeyEvent.KEYCODE_Z) {
      map.displayZoomControls(true);
      return(true);
    }

    return(super.onKeyDown(keyCode, event));
  }

  private GeoPoint getPoint(double lat, double lon) {
    return(new GeoPoint((int)(lat*1000000.0),
                          (int)(lon*1000000.0)));
  }






private class SitesOverlay extends ItemizedOverlay<OverlayItem> {
    private List<OverlayItem> items=new ArrayList<OverlayItem>();

    ///need to make this dy-NAMIK :p
    public SitesOverlay(Drawable marker) {
      super(marker);


      for (Entry<Integer, FieldTripStop> cur : Statics.fieldTripStops.entrySet())
        {
            // get the FieldTripStop object from the current hash table entry
            Statics.currentFTStop = cur.getValue();
            // concatenate numbers before (all) and after (6) the decimal, since
            // geopoints only accept 6 numbers past the decimal.
            theLat = Statics.currentFTStop.latitude;
            theLong = Statics.currentFTStop.longitude;
            theDLat = Double.parseDouble(theLat);
            theDLong = Double.parseDouble(theLong);

      boundCenterBottom(marker);

      items.add(new OverlayItem(getPoint(theDLat,
              theDLong),
                                "RANDOM TEXT?",
                                "RANDOM TEXT LALALA"));


        }
      populate();
    }

    @Override
    protected OverlayItem createItem(int i) {
      return(items.get(i));
    }

    @Override
    protected boolean onTap(int i) {
      Toast.makeText(FieldTrip.this,
                      items.get(i).getSnippet(),
                      Toast.LENGTH_SHORT).show();

      return(true);
    }

    @Override
    public int size() {
      return(items.size());
    }
  }
}

最佳答案

这段代码在我看来是正确的。如果您没有看到所有的点,则 fieldTripStops 没有您希望显示的所有点。仔细检查 fieldTripStops 集中的元素。

关于android - 在android中动态填充 map ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10669155/

相关文章:

java - google_app_id 丢失且 Google 服务初始化失败

c# - 内存违规在运行时动态附加到方法

c - 将动态多维数组的元素传递给函数

c# - 为什么动态转换比对象转换更快

java - 我应该使用哪个 Map 类?

python - 如何计算定义函数的输出?

python - 是否可以添加到已经在字典的键中定义的值(int)?

Android加速度计检测高度?

java - 如何修复Android Studio中的 "Missing classes"错误?

不带序列化的 Java 深度复制