コード例 #1
0
ファイル: Discover.java プロジェクト: A205-03/SBicycle
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_discover);
    mapView = (MapView) findViewById(R.id.map);
    mapView.onCreate(savedInstanceState);

    mark = new MarkerOptions[5];
    LatLng lat[] = new LatLng[5];
    lat[0] = new LatLng(31.2901513159, 120.5917328110);
    lat[1] = new LatLng(31.28015100, 120.59731000);
    lat[2] = new LatLng(31.180111000, 120.1232322);
    lat[3] = new LatLng(32.23123213, 121.32132);
    lat[4] = new LatLng(29.321321, 11.32123321);

    init();

    for (int i = 0; i < 5; i++) {
      mark[i] = new MarkerOptions();
      mark[i].position(lat[i]);
      mark[i].title("SBicycle store").snippet("the first SBicycle store in suzhou");
      mark[i].icon(BitmapDescriptorFactory.fromResource(R.drawable.ic_bicycle));
      Marker marker = aMap.addMarker(mark[i]);
    }
  }
コード例 #2
0
ファイル: MainActivity.java プロジェクト: caocf/yunt
  /** 获取视野内的marker 根据聚合算法合成自定义的marker 显示视野内的marker */
  private void resetMarks() {
    // 开始刷新界面
    Projection projection = aMap.getProjection();
    Point p = null;
    markerOptionsListInView.clear();
    // 获取在当前视野内的marker;提高效率
    for (MarkerOptions mp : markerOptionsList) {
      p = projection.toScreenLocation(mp.getPosition());
      if (p.x < 0 || p.y < 0 || p.x > width || p.y > height) {
        // 不添加到计算的列表中
      } else {
        markerOptionsListInView.add(mp);
      }
    }
    // 自定义的聚合类MarkerCluster
    ArrayList<MarkerCluster> clustersMarker = new ArrayList<MarkerCluster>();
    for (MarkerOptions mp : markerOptionsListInView) {
      if (clustersMarker.size() == 0) {
        clustersMarker.add(
            new MarkerCluster(MainActivity.this, mp, projection, gridSize)); // 100根据自己需求调整
      } else {
        boolean isIn = false;
        for (MarkerCluster cluster : clustersMarker) {
          if (cluster.getBounds().contains(mp.getPosition())) {
            cluster.addMarker(mp);
            isIn = true;
            break;
          }
        }
        if (!isIn) {
          clustersMarker.add(new MarkerCluster(MainActivity.this, mp, projection, gridSize));
        }
      }
    }

    // 先清除地图上所有覆盖物
    aMap.clear();
    for (MarkerCluster markerCluster : clustersMarker) {
      markerCluster.setpositionAndIcon(); // 设置聚合点的位置和icon
      aMap.addMarker(markerCluster.getOptions()); // 重新添加
    }
  }
コード例 #3
0
 public void dispatchMessage(android.os.Message msg) {
   try {
     jsonArray = new JSONArray(jsonResult);
     onClearMap(amap);
     for (int i = 0; i < jsonArray.length(); i++) {
       LatLng startpt =
           new LatLng(
               StringToDouble(jsonArray.getJSONObject(i).getString("LAT")),
               StringToDouble(jsonArray.getJSONObject(i).getString("LONG1"))); // 创建一个点对象
       amap.addMarker(
           new MarkerOptions()
               .title("公司名称 :" + jsonArray.getJSONObject(i).getString("NAME"))
               .snippet("公司地址 :" + jsonArray.getJSONObject(i).getString("ADDRESS"))
               .position(startpt));
       sx = sy = ex = ey = 0;
       SelectionView.this.invalidate();
     }
   } catch (JSONException e) {
     sx = sy = ex = ey = 0;
     SelectionView.this.invalidate();
     Toast.makeText(context, "区域内无企业实体..", Toast.LENGTH_SHORT).show();
     e.printStackTrace();
   }
 }