@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]); } }
/** 获取视野内的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()); // 重新添加 } }
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(); } }