80,351
社区成员
发帖
与我相关
我的任务
分享
package baidumapsdk.demo.map;
import android.app.Activity;
import android.content.Intent;
import android.graphics.Color;
import android.os.Bundle;
import android.provider.ContactsContract;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.SeekBar;
import android.widget.Toast;
import com.baidu.mapapi.map.BaiduMap;
import com.baidu.mapapi.map.BaiduMap.OnMarkerClickListener;
import com.baidu.mapapi.map.BaiduMap.OnMarkerDragListener;
import com.baidu.mapapi.map.BitmapDescriptor;
import com.baidu.mapapi.map.BitmapDescriptorFactory;
import com.baidu.mapapi.map.GroundOverlayOptions;
import com.baidu.mapapi.map.InfoWindow;
import com.baidu.mapapi.map.InfoWindow.OnInfoWindowClickListener;
import com.baidu.mapapi.map.MapStatusUpdate;
import com.baidu.mapapi.map.MapStatusUpdateFactory;
import com.baidu.mapapi.map.MapView;
import com.baidu.mapapi.map.Marker;
import com.baidu.mapapi.map.MarkerOptions;
import com.baidu.mapapi.map.MarkerOptions.MarkerAnimateType;
import com.baidu.mapapi.map.OverlayOptions;
import com.baidu.mapapi.model.LatLng;
import com.baidu.mapapi.model.LatLngBounds;
import com.baidu.mapapi.utils.SpatialRelationUtil;
import org.json.JSONArray;
import org.json.JSONObject;
import java.util.ArrayList;
import java.util.List;
import baidumapsdk.demo.BMapApiDemoMain;
import baidumapsdk.demo.R;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
/**
* 演示覆盖物的用法
*/
public class OverlayDemo extends Activity {
/**
* MapView 是地图主控件
*/
private String array[][] = new String[1000][9];
private MapView mMapView;
private BaiduMap mBaiduMap;
private Marker[] mMarker;
private void sendRequestWithOkHttp(){
new Thread(new Runnable() {
@Override
public void run() {
try {
OkHttpClient client=new OkHttpClient();
Request request= new Request.Builder()
.url("http://api.map.baidu.com/geodata/v3/poi/list?geotable_id=168402&page_size=200&ak=pgzsdGsmgmlPj55SP0BRVzk2oAvjjHcj")
.build();
Response response = client.newCall(request).execute();
String responseData=response.body().string();
if(response.isSuccessful()){
Log.d("OKHttp",responseData);
}
//if(!TextUtils.isEmpty(responseData)){
parseJSONWithJSONObject(responseData);
}catch (Exception e){
e.printStackTrace();
}
}
}).start();
}
private void showResponse(final String response){
runOnUiThread(new Runnable() {
@Override
public void run() {
}
});
}
public void parseJSONWithJSONObject(String jsonData){
try {
JSONObject jsonObject=new JSONObject(jsonData);
JSONArray jsonArray=jsonObject.getJSONArray("pois");
for(int i=0;i<array.length;i++){
JSONObject sonObject=jsonArray.getJSONObject(i);
;
String id= sonObject.getString("id");
String address=sonObject.getString("address");
String province=sonObject.getString("province");
String city=sonObject.getString("city");
//String create_time=sonObject.getString("create_time");
String location=sonObject.getString("location");
//String gcj_location=sonObject.getString("gcj_location");
String radii=sonObject.getString("radii");
String level=sonObject.getString("level");
String hazard=sonObject.getString("hazard");
String id1= location.substring(1,location.lastIndexOf(","));
String id2= location.substring(location.lastIndexOf(",")+1,location.length()-1);
array[i][0]=id;
array[i][1]=address;
array[i][2]=province;
array[i][3]=city;
array[i][4]=id1;
array[i][5]=id2;
array[i][6]=radii;
array[i][7]=level;
array[i][8]=hazard;
Log.d("OverlayDemo",address);
Log.d("OverlayDemo",province);
Log.d("OverlayDemo",city);
Log.d("OverlayDemo",id);
Log.d("OverlayDemo",location);
Log.d("OverlayDemo",radii);
Log.d("OverlayDemo",level);
Log.d("OverlayDemo",hazard);
}
}catch (Exception e){
e.printStackTrace();
}
}
// 初始化全局 bitmap 信息,不用时及时 recycle
BitmapDescriptor bdGround = BitmapDescriptorFactory
.fromResource(R.drawable.ground_overlay);
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_overlay);
mMapView = (MapView) findViewById(R.id.bmapView);
mBaiduMap = mMapView.getMap();
MapStatusUpdate msu = MapStatusUpdateFactory.zoomTo(14.0f);
mBaiduMap.setMapStatus(msu);
sendRequestWithOkHttp();
//initOverlay();
mMarker=new Marker[array.length];
for (int i=0;i<array.length;i++){
double longitude= Double.parseDouble(array[i][4]);
double latitude= Double.parseDouble(array[i][5]);
LatLng latLng=new LatLng(latitude,longitude);
OverlayOptions radpacketC = new MarkerOptions().position(latLng).icon(bdGround);
mMarker[i] = (Marker) (mBaiduMap.addOverlay(radpacketC));
}
mBaiduMap.setOnMarkerClickListener(new OnMarkerClickListener() {
public boolean onMarkerClick(final Marker marker) {
ArrayList<LatLng> latlist = new ArrayList<LatLng>();
// ArrayList lable = new ArrayList();
//取到所有经纬度
for (int k = 0; k < array.length; k++) {
double lat=Double.parseDouble(array[k][5]);double lng=Double.parseDouble(array[k][4]);
LatLng allLat = new LatLng(lat, lng);
latlist.add(allLat);
}
//循环所有覆盖物
for (int i = 0; i < array.length; i++) {
//判断点击的覆盖物
if (marker == mMarker[i]) {
//获取点击的这个覆盖物的经纬
double lat=Double.parseDouble(array[i][5]);double lng=Double.parseDouble(array[i][4]);
// LatLng clicklat = new LatLng(lat, lng);
//移除点击的这个覆盖物的经纬度
latlist.remove(i);
//boolean is = false;
//判断点击的覆盖物是否被重叠
}
}
return true;
}
});
}
/**
* 清除所有Overlay
*
* @param view
*/
public void clearOverlay(View view) {
mBaiduMap.clear();
/* mMarkerA = null;
mMarkerB = null;
mMarkerC = null;
mMarkerD = null;*/
}
/**
* 重新添加Overlay
*
* @param view
*/
public void resetOverlay(View view) {
//clearOverlay(null);
// initOverlay();
}
/* private class SeekBarListener implements SeekBar.OnSeekBarChangeListener {
@Override
public void onProgressChanged(SeekBar seekBar, int progress,
boolean fromUser) {
// TODO Auto-generated method stub
// float alpha = ((float) seekBar.getProgress()) / 10;
if (mMarkerA != null) {
mMarkerA.setAlpha(alpha);
}
if (mMarkerB != null) {
mMarkerB.setAlpha(alpha);
}
if (mMarkerC != null) {
mMarkerC.setAlpha(alpha);
}
if (mMarkerD != null) {
mMarkerD.setAlpha(alpha);
}
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
// TODO Auto-generated method stub
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
// TODO Auto-generated method stub
}
}*/
@Override
protected void onPause() {
// MapView的生命周期与Activity同步,当activity挂起时需调用MapView.onPause()
mMapView.onPause();
super.onPause();
}
@Override
protected void onResume() {
// MapView的生命周期与Activity同步,当activity恢复时需调用MapView.onResume()
mMapView.onResume();
super.onResume();
}
@Override
protected void onDestroy() {
// MapView的生命周期与Activity同步,当activity销毁时需调用MapView.destroy()
mMapView.onDestroy();
super.onDestroy();
// 回收 bitmap 资源
bdGround.recycle();
}
}