使用RelativeLayout代替Infowindow

package map;


import java.util.ArrayList;
import java.util.List;


import map.entities.Parent;
import android.app.Activity;
import android.graphics.Point;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.DisplayMetrics;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.TextView;


import com.baidu.mapapi.SDKInitializer;
import com.baidu.mapapi.map.BaiduMap;
import com.baidu.mapapi.map.BaiduMap.OnMapClickListener;
import com.baidu.mapapi.map.BaiduMap.OnMapStatusChangeListener;
import com.baidu.mapapi.map.BaiduMap.OnMarkerClickListener;
import com.baidu.mapapi.map.BitmapDescriptorFactory;
import com.baidu.mapapi.map.InfoWindow;
import com.baidu.mapapi.map.MapPoi;
import com.baidu.mapapi.map.MapStatus;
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.OverlayOptions;
import com.baidu.mapapi.map.Projection;
import com.baidu.mapapi.model.LatLng;
import com.example.map.R;
import com.lidroid.xutils.DbUtils;
import com.lidroid.xutils.db.sqlite.Selector;
import com.lidroid.xutils.exception.DbException;


public class MainActivity extends Activity {
<span style="white-space:pre">	</span>private MapView mMapView = null;
<span style="white-space:pre">	</span>private BaiduMap mBaiduMap;
<span style="white-space:pre">	</span>private InfoWindow mInfoWindow;
<span style="white-space:pre">	</span>private RelativeLayout mRelativeLayout;
<span style="white-space:pre">	</span>private int height;// 屏幕高度(px)
<span style="white-space:pre">	</span>private int width;// 屏幕宽度(px)
<span style="white-space:pre">	</span>private ArrayList<LatLng> markerList = new ArrayList<LatLng>();// 所有的marker
<span style="white-space:pre">	</span>private ArrayList<LatLng> markerListInView = new ArrayList<LatLng>();// 视野内的marker
<span style="white-space:pre">	</span>private List<Parent> citys;
<span style="white-space:pre">	</span>private List<Parent> countrys;
<span style="white-space:pre">	</span>private static int FLAG = 1;
<span style="white-space:pre">	</span>private static final int DITU = 1;
<span style="white-space:pre">	</span>protected static final int MARK = 0;
<span style="white-space:pre">	</span>private static final int LOAD_PROVINCE = 0x110;
<span style="white-space:pre">	</span>private static final int LOAD_COUNTRYS = 0x111;
<span style="white-space:pre">	</span>private static final int LOAD_POINTS = 0X112;
<span style="white-space:pre">	</span>private static final int RESULT_PROVINCE = 0X113;
<span style="white-space:pre">	</span>private static final int RESULT_COUNTRYS = 0X114;


<span style="white-space:pre">	</span>MapStatus ms;
<span style="white-space:pre">	</span>DbUtils db;
<span style="white-space:pre">	</span>private String[][] areas = {
<span style="white-space:pre">			</span>{ "330000", "0", "1", "浙江省", "29.159494", "119.957202" },
<span style="white-space:pre">			</span>{ "330100", "330000", "2", "杭州市", "30.259244", "120.219375" },


<span style="white-space:pre">			</span>{ "330102", "330100", "3", "上城区", "30.232358", "120.180126" },
<span style="white-space:pre">			</span>{ "330103", "330100", "3", "下城区", "30.310288", "120.186535" },
<span style="white-space:pre">			</span>{ "330104", "330100", "3", "江干区", "30.315832", "120.303823" },
<span style="white-space:pre">			</span>{ "330105", "330100", "3", "拱墅区", "30.344732", "120.158845" },
<span style="white-space:pre">			</span>{ "330106", "330100", "3", "西湖区", "28.657326", "115.898948" },
<span style="white-space:pre">			</span>{ "330108", "330100", "3", "滨江区", "0.187588", "120.19237" },
<span style="white-space:pre">			</span>{ "330109", "330100", "3", "萧山区", "30.172894", "120.389081" },
<span style="white-space:pre">			</span>{ "330110", "330100", "3", "余杭区", "30.38812", "119.998089" },
<span style="white-space:pre">			</span>{ "330122", "330100", "3", "桐庐县", "29.836582", "119.560462" },
<span style="white-space:pre">			</span>{ "330127", "330100", "3", "淳安县", "29.614714", "118.895765" },
<span style="white-space:pre">			</span>{ "330182", "330100", "3", "建德市", "29.487115", "119.379533" },
<span style="white-space:pre">			</span>{ "330183", "330100", "3", "富阳市", "30.001094", "119.846692" },
<span style="white-space:pre">			</span>{ "330185", "330100", "3", "临安市", "30.207684", "119.350295" },
<span style="white-space:pre">			</span>{ "330200", "330000", "2", "宁波市", "29.885259", "121.579006" },


<span style="white-space:pre">			</span>{ "330203", "330200", "3", "海曙区", "29.876801", "121.535395" },
<span style="white-space:pre">			</span>{ "330204", "330200", "3", "江东区", "29.875392", "121.598001" },
<span style="white-space:pre">			</span>{ "330205", "330200", "3", "江北区", "29.966392", "121.493299" },
<span style="white-space:pre">			</span>{ "330206", "330200", "3", "北仑区", "29.868332", "121.889419" },
<span style="white-space:pre">			</span>{ "330211", "330200", "3", "镇海区", "9.995449", "121.61663" },
<span style="white-space:pre">			</span>{ "330212", "330200", "3", "鄞州区", "29.785459", "121.537835" },
<span style="white-space:pre">			</span>{ "330225", "330200", "3", "象山县", "29.378771", "121.858666" },
<span style="white-space:pre">			</span>{ "330226", "330200", "3", "宁海县", "29.314474", "121.463624" },
<span style="white-space:pre">			</span>{ "330281", "330200", "3", "余姚市", "29.996457", "121.152779" },
<span style="white-space:pre">			</span>{ "330282", "330200", "3", "慈溪市", "30.189257", "121.338408" },
<span style="white-space:pre">			</span>{ "330283", "330200", "3", "奉化市", "29.617073", "121.377186" },
<span style="white-space:pre">			</span>{ "330300", "330000", "2", "温州市", "28.002838", "120.690635" },


<span style="white-space:pre">			</span>{ "330302", "330300", "3", "鹿城区", "28.067865", "120.565799" },
<span style="white-space:pre">			</span>{ "330303", "330300", "3", "龙湾区", "27.913341", "120.811078" },
<span style="white-space:pre">			</span>{ "330304", "330300", "3", "瓯海区", "27.972177", "120.558404" },
<span style="white-space:pre">			</span>{ "330322", "330300", "3", "洞头县", "27.903664", "121.125826" },
<span style="white-space:pre">			</span>{ "330324", "330300", "3", "永嘉县", "28.33639", "120.668809" },
<span style="white-space:pre">			</span>{ "330326", "330300", "3", "平阳县", "27.637701", "120.389387" },
<span style="white-space:pre">			</span>{ "330327", "330300", "3", "苍南县", "27.434436", "120.445543" },
<span style="white-space:pre">			</span>{ "330328", "330300", "3", "文成县", "27.812713", "120.028422" },
<span style="white-space:pre">			</span>{ "330329", "330300", "3", "泰顺县", "27.536407", "119.884868" },
<span style="white-space:pre">			</span>{ "330381", "330300", "3", "瑞安市", "7.829231", "120.46834" },
<span style="white-space:pre">			</span>{ "330382", "330300", "3", "乐清市", "28.261839", "121.016175" },
<span style="white-space:pre">			</span>{ "330400", "330000", "2", "嘉兴市", "30.773992", "120.760428" },


<span style="white-space:pre">			</span>{ "330402", "330400", "3", "南湖区", "30.716358", "120.844535" },
<span style="white-space:pre">			</span>{ "330411", "330400", "3", "秀洲区", "30.777679", "120.691907" },
<span style="white-space:pre">			</span>{ "330421", "330400", "3", "嘉善县", "30.905748", "120.908873" },
<span style="white-space:pre">			</span>{ "330424", "330400", "3", "海盐县", "30.526043", "120.885576" },
<span style="white-space:pre">			</span>{ "330481", "330400", "3", "海宁市", "30.442177", "120.618727" },
<span style="white-space:pre">			</span>{ "330482", "330400", "3", "平湖市", "30.716529", "121.105839" },
<span style="white-space:pre">			</span>{ "330483", "330400", "3", "桐乡市", "30.612341", "120.490411" },
<span style="white-space:pre">			</span>{ "330500", "330000", "2", "湖州市", "30.877925", "120.137243" },


<span style="white-space:pre">			</span>{ "330502", "330500", "3", "吴兴区", "30.808545", "120.088919" },
<span style="white-space:pre">			</span>{ "330503", "330500", "3", "南浔区", "30.766831", "120.309147" },
<span style="white-space:pre">			</span>{ "330521", "330500", "3", "德清县", "30.567583", "120.049831" },
<span style="white-space:pre">			</span>{ "330522", "330500", "3", "长兴县", "0.983353", "119.81942" },
<span style="white-space:pre">			</span>{ "330523", "330500", "3", "安吉县", "30.62637", "119.583158" },
<span style="white-space:pre">			</span>{ "330600", "330000", "2", "绍兴市", "30.002365", "120.592467" },


<span style="white-space:pre">			</span>{ "330602", "330600", "3", "越城区", "30.015793", "120.618327" },
<span style="white-space:pre">			</span>{ "330621", "330600", "3", "绍兴县", "29.968789", "120.572451" },
<span style="white-space:pre">			</span>{ "330624", "330600", "3", "新昌县", "29.414314", "120.975702" },
<span style="white-space:pre">			</span>{ "330681", "330600", "3", "诸暨市", "29.6994", "120.281434" },
<span style="white-space:pre">			</span>{ "330682", "330600", "3", "上虞市", "29.97804", "120.889432" },
<span style="white-space:pre">			</span>{ "330683", "330600", "3", "嵊州市", "29.591008", "120.761431" },
<span style="white-space:pre">			</span>{ "330700", "330000", "2", "金华市", "29.102899", "119.652576" },


<span style="white-space:pre">			</span>{ "330702", "330700", "3", "婺城区", "28.98454", "119.517572" },
<span style="white-space:pre">			</span>{ "330703", "330700", "3", "金东区", "29.155526", "119.809227" },
<span style="white-space:pre">			</span>{ "330723", "330700", "3", "武义县", "28.774056", "119.720833" },
<span style="white-space:pre">			</span>{ "330726", "330700", "3", "浦江县", "29.526266", "119.910488" },
<span style="white-space:pre">			</span>{ "330727", "330700", "3", "磐安县", "29.044202", "120.567447" },
<span style="white-space:pre">			</span>{ "330781", "330700", "3", "兰溪市", "29.284103", "119.533338" },
<span style="white-space:pre">			</span>{ "330782", "330700", "3", "义乌市", "29.306444", "120.067296" },
<span style="white-space:pre">			</span>{ "330783", "330700", "3", "东阳市", "29.237427", "120.380818" },
<span style="white-space:pre">			</span>{ "330784", "330700", "3", "永康市", "28.940177", "120.108684" },
<span style="white-space:pre">			</span>{ "330800", "330000", "2", "衢州市", "28.95691", "118.875842" },


<span style="white-space:pre">			</span>{ "330802", "330800", "3", "柯城区", "28.998535", "118.813003" },
<span style="white-space:pre">			</span>{ "330803", "330800", "3", "衢江区", "28.941983", "118.939044" },
<span style="white-space:pre">			</span>{ "330822", "330800", "3", "常山县", "8.973666", "118.54767" },
<span style="white-space:pre">			</span>{ "330824", "330800", "3", "开化县", "9.189938", "118.33165" },
<span style="white-space:pre">			</span>{ "330825", "330800", "3", "龙游县", "28.997079", "119.198664" },
<span style="white-space:pre">			</span>{ "330881", "330800", "3", "江山市", "28.58197", "118.607086" },
<span style="white-space:pre">			</span>{ "330900", "330000", "2", "舟山市", "30.03601", "122.169872" },


<span style="white-space:pre">			</span>{ "330902", "330900", "3", "定海区", "30.064847", "122.073024" },
<span style="white-space:pre">			</span>{ "330903", "330900", "3", "普陀区", "31.263743", "121.398443" },
<span style="white-space:pre">			</span>{ "330921", "330900", "3", "岱山县", "30.319416", "122.260359" },
<span style="white-space:pre">			</span>{ "330922", "330900", "3", "嵊泗县", "30.705004", "122.481686" },
<span style="white-space:pre">			</span>{ "331000", "330000", "2", "台州市", "28.668283", "121.440613" },


<span style="white-space:pre">			</span>{ "331002", "331000", "3", "椒江区", "28.657016", "121.467376" },
<span style="white-space:pre">			</span>{ "331003", "331000", "3", "黄岩区", "28.604655", "121.088318" },
<span style="white-space:pre">			</span>{ "331004", "331000", "3", "路桥区", "28.548659", "121.450242" },
<span style="white-space:pre">			</span>{ "331021", "331000", "3", "玉环县", "28.179738", "121.284426" },
<span style="white-space:pre">			</span>{ "331022", "331000", "3", "三门县", "29.017744", "121.488229" },
<span style="white-space:pre">			</span>{ "331023", "331000", "3", "天台县", "29.151779", "120.985563" },
<span style="white-space:pre">			</span>{ "331024", "331000", "3", "仙居县", "28.738742", "120.640606" },
<span style="white-space:pre">			</span>{ "331081", "331000", "3", "温岭市", "28.400554", "121.421046" },
<span style="white-space:pre">			</span>{ "331082", "331000", "3", "临海市", "28.857389", "121.221919" },
<span style="white-space:pre">			</span>{ "331100", "330000", "2", "丽水市", "28.4563", "119.929576" },


<span style="white-space:pre">			</span>{ "331102", "331100", "3", "莲都区", "28.447361", "119.849952" },
<span style="white-space:pre">			</span>{ "331121", "331100", "3", "青田县", "28.208429", "120.146738" },
<span style="white-space:pre">			</span>{ "331122", "331100", "3", "缙云县", "28.666326", "120.191882" },
<span style="white-space:pre">			</span>{ "331123", "331100", "3", "遂昌县", "28.52541", "119.089342" },
<span style="white-space:pre">			</span>{ "331124", "331100", "3", "松阳县", "28.41158", "119.441013" },
<span style="white-space:pre">			</span>{ "331125", "331100", "3", "云和县", "8.13132", "119.54173" },
<span style="white-space:pre">			</span>{ "331126", "331100", "3", "庆元县", "27.628046", "119.157619" },
<span style="white-space:pre">			</span>{ "331127", "331100", "3", "景宁畲族自治县", "7.896053", "119.61929" },
<span style="white-space:pre">			</span>{ "331181", "331100", "3", "龙泉市", "28.050639", "119.082297" } };


<span style="white-space:pre">	</span>@Override
<span style="white-space:pre">	</span>protected void onCreate(Bundle savedInstanceState) {
<span style="white-space:pre">		</span>// TODO Auto-generated method stub
<span style="white-space:pre">		</span>super.onCreate(savedInstanceState);
<span style="white-space:pre">		</span>SDKInitializer.initialize(getApplicationContext());
<span style="white-space:pre">		</span>setContentView(R.layout.layout_main);
<span style="white-space:pre">		</span>/* 获取屏幕长宽相关 */
<span style="white-space:pre">		</span>DisplayMetrics dm = new DisplayMetrics();
<span style="white-space:pre">		</span>getWindowManager().getDefaultDisplay().getMetrics(dm);
<span style="white-space:pre">		</span>width = dm.widthPixels;
<span style="white-space:pre">		</span>height = dm.heightPixels;
<span style="white-space:pre">		</span>// 初始化控件
<span style="white-space:pre">		</span>initViews();
<span style="white-space:pre">		</span>// 数据库
<span style="white-space:pre">		</span>initDb();
<span style="white-space:pre">		</span>// 百度地图设置


<span style="white-space:pre">		</span>MapStatus ms = new MapStatus.Builder()
<span style="white-space:pre">				</span>.target(new LatLng(30.2817240000, 119.9980410000)).zoom(8)
<span style="white-space:pre">				</span>.build();
<span style="white-space:pre">		</span>mBaiduMap.animateMapStatus(MapStatusUpdateFactory.newMapStatus(ms));// 设置初始地图状态
<span style="white-space:pre">		</span>// mBaiduMap.setMyLocationEnabled(true);
<span style="white-space:pre">		</span>mBaiduMap.setOnMapClickListener(new OnMapClickListener() {


<span style="white-space:pre">			</span>@Override
<span style="white-space:pre">			</span>public boolean onMapPoiClick(MapPoi arg0) {
<span style="white-space:pre">				</span>return false;
<span style="white-space:pre">			</span>}


<span style="white-space:pre">			</span>@Override
<span style="white-space:pre">			</span>public void onMapClick(LatLng arg0) {
<span style="white-space:pre">				</span>mRelativeLayout.setVisibility(View.GONE);


<span style="white-space:pre">			</span>}
<span style="white-space:pre">		</span>});


<span style="white-space:pre">		</span>new Thread(new Runnable() {


<span style="white-space:pre">			</span>@Override
<span style="white-space:pre">			</span>public void run() {
<span style="white-space:pre">				</span>// TODO Auto-generated method stub
<span style="white-space:pre">				</span>mBaiduMap.clear();


<span style="white-space:pre">				</span>try {


<span style="white-space:pre">					</span>List<Parent> citys = db.findAll(Selector.from(Parent.class)
<span style="white-space:pre">							</span>.where("level", "=", 2));
<span style="white-space:pre">					</span>for (int i = 0; i < citys.size(); i++) {
<span style="white-space:pre">						</span>addProvince(new LatLng(citys.get(i).getLatitude(),
<span style="white-space:pre">								</span>citys.get(i).getLongitude()), 100);


<span style="white-space:pre">					</span>}


<span style="white-space:pre">				</span>} catch (DbException e) {
<span style="white-space:pre">					</span>// TODO Auto-generated catch block
<span style="white-space:pre">					</span>e.printStackTrace();
<span style="white-space:pre">				</span>}
<span style="white-space:pre">			</span>}
<span style="white-space:pre">		</span>}).start();


<span style="white-space:pre">		</span>// 设置地图状态改变的监听事件


<span style="white-space:pre">		</span>mBaiduMap.setOnMapStatusChangeListener(new OnMapStatusChangeListener() {


<span style="white-space:pre">			</span>@Override
<span style="white-space:pre">			</span>public void onMapStatusChangeStart(MapStatus arg0) {
<span style="white-space:pre">				</span>// TODO Auto-generated method stub
<span style="white-space:pre">				</span>if (mRelativeLayout.getVisibility() == 0) {
<span style="white-space:pre">					</span>mRelativeLayout.setVisibility(View.GONE);
<span style="white-space:pre">				</span>}
<span style="white-space:pre">			</span>}


<span style="white-space:pre">			</span>@Override
<span style="white-space:pre">			</span>public void onMapStatusChangeFinish(MapStatus arg0) {
<span style="white-space:pre">				</span>// TODO Auto-generated method stub
<span style="white-space:pre">				</span>float zoom = mBaiduMap.getMapStatus().zoom;


<span style="white-space:pre">				</span>Log.e("zoom", String.valueOf(zoom));
<span style="white-space:pre">				</span>if (zoom < 11) {
<span style="white-space:pre">					</span>new LoadDataTask().execute(LOAD_PROVINCE);


<span style="white-space:pre">				</span>}


<span style="white-space:pre">				</span>if (zoom >= 11 && zoom < 12) {
<span style="white-space:pre">					</span>new LoadDataTask().execute(LOAD_COUNTRYS);


<span style="white-space:pre">				</span>} else if (zoom >= 12 && zoom < 13) {
<span style="white-space:pre">					</span>new LoadDataTask().execute(LOAD_POINTS);


<span style="white-space:pre">				</span>}


<span style="white-space:pre">			</span>}


<span style="white-space:pre">			</span>@Override
<span style="white-space:pre">			</span>public void onMapStatusChange(MapStatus arg0) {
<span style="white-space:pre">				</span>// TODO Auto-generated method stub


<span style="white-space:pre">			</span>}
<span style="white-space:pre">		</span>});


<span style="white-space:pre">	</span>}


<span style="white-space:pre">	</span>/**
<span style="white-space:pre">	</span> * 数据库相关
<span style="white-space:pre">	</span> */
<span style="white-space:pre">	</span>private void initDb() {
<span style="white-space:pre">		</span>// TODO Auto-generated method stub


<span style="white-space:pre">		</span>db = DbUtils.create(this);
<span style="white-space:pre">		</span>db.configAllowTransaction(true);
<span style="white-space:pre">		</span>db.configDebug(true);


<span style="white-space:pre">		</span>com.lidroid.xutils.db.table.Table mTable = com.lidroid.xutils.db.table.Table
<span style="white-space:pre">				</span>.get(db, Parent.class);
<span style="white-space:pre">		</span>if (mTable.isCheckedDatabase() == false) {


<span style="white-space:pre">			</span>for (int i = 0; i < areas.length; i++) {
<span style="white-space:pre">				</span>Parent data = new Parent();
<span style="white-space:pre">				</span>data.setCode(Integer.parseInt(areas[i][0]));
<span style="white-space:pre">				</span>data.setParentCode(Integer.parseInt(areas[i][1]));
<span style="white-space:pre">				</span>data.setLevel(Integer.parseInt(areas[i][2]));
<span style="white-space:pre">				</span>data.setName(areas[i][3]);
<span style="white-space:pre">				</span>data.setLatitude(Float.parseFloat(areas[i][4]));
<span style="white-space:pre">				</span>data.setLongitude(Float.parseFloat(areas[i][5]));
<span style="white-space:pre">				</span>try {
<span style="white-space:pre">					</span>db.save(data);
<span style="white-space:pre">				</span>} catch (DbException e) {
<span style="white-space:pre">					</span>// TODO Auto-generated catch block
<span style="white-space:pre">					</span>e.printStackTrace();
<span style="white-space:pre">				</span>}
<span style="white-space:pre">			</span>}
<span style="white-space:pre">		</span>}


<span style="white-space:pre">	</span>}


<span style="white-space:pre">	</span>/**
<span style="white-space:pre">	</span> * 初始化组件
<span style="white-space:pre">	</span> */
<span style="white-space:pre">	</span>private void initViews() {
<span style="white-space:pre">		</span>// TODO Auto-generated method stub
<span style="white-space:pre">		</span>mMapView = (MapView) findViewById(R.id.bmapView);
<span style="white-space:pre">		</span>mBaiduMap = mMapView.getMap();
<span style="white-space:pre">		</span>mRelativeLayout = (RelativeLayout) findViewById(R.id.id_layout_pop_bottom);


<span style="white-space:pre">	</span>}


<span style="white-space:pre">	</span>/**
<span style="white-space:pre">	</span> * 增加省标记点方法
<span style="white-space:pre">	</span> * 
<span style="white-space:pre">	</span> * @param location
<span style="white-space:pre">	</span> * @param size
<span style="white-space:pre">	</span> */
<span style="white-space:pre">	</span>private void addProvince(LatLng location, int size) {
<span style="white-space:pre">		</span>// TODO Auto-generated method stub


<span style="white-space:pre">		</span>OverlayOptions province = new MarkerOptions()
<span style="white-space:pre">				</span>.title("市")
<span style="white-space:pre">				</span>.position(location)
<span style="white-space:pre">				</span>.icon(BitmapDescriptorFactory.fromView(getView(
<span style="white-space:pre">						</span>String.valueOf(size), R.drawable.marker_cluster_100)));
<span style="white-space:pre">		</span>mBaiduMap.addOverlay(province);


<span style="white-space:pre">	</span>}


<span style="white-space:pre">	</span>/**
<span style="white-space:pre">	</span> * 增加市标记点方法
<span style="white-space:pre">	</span> * 
<span style="white-space:pre">	</span> * @param location
<span style="white-space:pre">	</span> * @param size
<span style="white-space:pre">	</span> */
<span style="white-space:pre">	</span>private void addCountry(LatLng location, int size) {
<span style="white-space:pre">		</span>// TODO Auto-generated method stub


<span style="white-space:pre">		</span>OverlayOptions country = new MarkerOptions()
<span style="white-space:pre">				</span>.title("区")
<span style="white-space:pre">				</span>.position(location)
<span style="white-space:pre">				</span>.icon(BitmapDescriptorFactory.fromView(getView(
<span style="white-space:pre">						</span>String.valueOf(size), R.drawable.marker_cluster_50)));
<span style="white-space:pre">		</span>mBaiduMap.addOverlay(country);


<span style="white-space:pre">	</span>}


<span style="white-space:pre">	</span>/**
<span style="white-space:pre">	</span> * 增加随机标记点方法
<span style="white-space:pre">	</span> * 
<span style="white-space:pre">	</span> * @param location
<span style="white-space:pre">	</span> * @param size
<span style="white-space:pre">	</span> */
<span style="white-space:pre">	</span>private void addPoint(LatLng location, String title) {
<span style="white-space:pre">		</span>// TODO Auto-generated method stub


<span style="white-space:pre">		</span>OverlayOptions point = new MarkerOptions()
<span style="white-space:pre">				</span>.title("随机")
<span style="white-space:pre">				</span>.position(location)
<span style="white-space:pre">				</span>.icon(BitmapDescriptorFactory.fromView(getView(title,
<span style="white-space:pre">						</span>R.drawable.icon_gcoding)));
<span style="white-space:pre">		</span>mBaiduMap.addOverlay(point);
<span style="white-space:pre">	</span>}


<span style="white-space:pre">	</span>/**
<span style="white-space:pre">	</span> * getview方法 填充布局
<span style="white-space:pre">	</span> * 
<span style="white-space:pre">	</span> * @param carNum
<span style="white-space:pre">	</span> * @param resourceId
<span style="white-space:pre">	</span> * @return
<span style="white-space:pre">	</span> */
<span style="white-space:pre">	</span>public View getView(String title, int resourceId) {
<span style="white-space:pre">		</span>View view = this.getLayoutInflater().inflate(R.layout.point, null);
<span style="white-space:pre">		</span>TextView carNumTextView = (TextView) view.findViewById(R.id.my_car_num);
<span style="white-space:pre">		</span>RelativeLayout backGround = (RelativeLayout) view
<span style="white-space:pre">				</span>.findViewById(R.id.my_car_bg);
<span style="white-space:pre">		</span>backGround.setBackgroundResource(resourceId);
<span style="white-space:pre">		</span>carNumTextView.setText(title);


<span style="white-space:pre">		</span>return view;
<span style="white-space:pre">	</span>}


<span style="white-space:pre">	</span>/**
<span style="white-space:pre">	</span> * 点击标记点弹出框的UI布局
<span style="white-space:pre">	</span> * 
<span style="white-space:pre">	</span> * @param resourceId
<span style="white-space:pre">	</span> * @param name
<span style="white-space:pre">	</span> * @param location
<span style="white-space:pre">	</span> * @return
<span style="white-space:pre">	</span> */
<span style="white-space:pre">	</span>public void popInfo(RelativeLayout mlayoutPop, String name, LatLng location) {


<span style="white-space:pre">		</span>class ViewHolder {
<span style="white-space:pre">			</span>TextView tName;
<span style="white-space:pre">			</span>TextView tLocation;
<span style="white-space:pre">			</span>ImageView popImg;
<span style="white-space:pre">		</span>}
<span style="white-space:pre">		</span>ViewHolder viewHolder = null;
<span style="white-space:pre">		</span>if (mlayoutPop.getTag() == null) {
<span style="white-space:pre">			</span>viewHolder = new ViewHolder();
<span style="white-space:pre">			</span>viewHolder.popImg = (ImageView) mlayoutPop
<span style="white-space:pre">					</span>.findViewById(R.id.pop_img_bottom);
<span style="white-space:pre">			</span>viewHolder.tLocation = (TextView) mlayoutPop
<span style="white-space:pre">					</span>.findViewById(R.id.id_pop_text_location_bottom);
<span style="white-space:pre">			</span>viewHolder.tName = (TextView) mlayoutPop
<span style="white-space:pre">					</span>.findViewById(R.id.id_pop_text_name_bottom);
<span style="white-space:pre">			</span>mlayoutPop.setTag(viewHolder);
<span style="white-space:pre">		</span>}
<span style="white-space:pre">		</span>viewHolder = (ViewHolder) mlayoutPop.getTag();
<span style="white-space:pre">		</span>// viewHolder.popImg.setImageResource(resourceId);
<span style="white-space:pre">		</span>viewHolder.tLocation.setText(String.valueOf(location));
<span style="white-space:pre">		</span>viewHolder.tName.setText(name);


<span style="white-space:pre">	</span>}


<span style="white-space:pre">	</span>/**
<span style="white-space:pre">	</span> * 把一个view转化成bitmap对象
<span style="white-space:pre">	</span> */
<span style="white-space:pre">	</span>// public static Bitmap getViewBitmap(View view) {
<span style="white-space:pre">	</span>// view.measure(MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED),
<span style="white-space:pre">	</span>// MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));
<span style="white-space:pre">	</span>// view.layout(0, 0, view.getMeasuredWidth(), view.getMeasuredHeight());
<span style="white-space:pre">	</span>// view.buildDrawingCache();
<span style="white-space:pre">	</span>// Bitmap bitmap = view.getDrawingCache();
<span style="white-space:pre">	</span>// return bitmap;
<span style="white-space:pre">	</span>// }


<span style="white-space:pre">	</span>@Override
<span style="white-space:pre">	</span>protected void onDestroy() {
<span style="white-space:pre">		</span>super.onDestroy();
<span style="white-space:pre">		</span>// 在activity执行onDestroy时执行mMapView.onDestroy(),实现地图生命周期管理
<span style="white-space:pre">		</span>mMapView.onDestroy();
<span style="white-space:pre">	</span>}


<span style="white-space:pre">	</span>@Override
<span style="white-space:pre">	</span>protected void onResume() {
<span style="white-space:pre">		</span>super.onResume();
<span style="white-space:pre">		</span>// 在activity执行onResume时执行mMapView. onResume (),实现地图生命周期管理
<span style="white-space:pre">		</span>mMapView.onResume();
<span style="white-space:pre">	</span>}


<span style="white-space:pre">	</span>@Override
<span style="white-space:pre">	</span>protected void onPause() {
<span style="white-space:pre">		</span>super.onPause();
<span style="white-space:pre">		</span>// 在activity执行onPause时执行mMapView. onPause (),实现地图生命周期管理
<span style="white-space:pre">		</span>mMapView.onPause();
<span style="white-space:pre">	</span>}


<span style="white-space:pre">	</span>@Override
<span style="white-space:pre">	</span>public boolean onCreateOptionsMenu(Menu menu) {
<span style="white-space:pre">		</span>// TODO Auto-generated method stub
<span style="white-space:pre">		</span>getMenuInflater().inflate(R.menu.mapmenu, menu);
<span style="white-space:pre">		</span>return super.onCreateOptionsMenu(menu);
<span style="white-space:pre">	</span>}


<span style="white-space:pre">	</span>/**
<span style="white-space:pre">	</span> * 地图选项
<span style="white-space:pre">	</span> */
<span style="white-space:pre">	</span>@Override
<span style="white-space:pre">	</span>public boolean onOptionsItemSelected(MenuItem item) {
<span style="white-space:pre">		</span>// TODO Auto-generated method stub
<span style="white-space:pre">		</span>switch (item.getItemId()) {
<span style="white-space:pre">		</span>case R.id.id_map_common:
<span style="white-space:pre">			</span>mBaiduMap.setMapType(BaiduMap.MAP_TYPE_NORMAL);
<span style="white-space:pre">			</span>break;


<span style="white-space:pre">		</span>case R.id.id_map_sate:
<span style="white-space:pre">			</span>mBaiduMap.setMapType(BaiduMap.MAP_TYPE_SATELLITE);
<span style="white-space:pre">			</span>break;


<span style="white-space:pre">		</span>case R.id.id_map_traffic:
<span style="white-space:pre">			</span>if (mBaiduMap.isTrafficEnabled()) {
<span style="white-space:pre">				</span>mBaiduMap.setTrafficEnabled(false);
<span style="white-space:pre">				</span>item.setTitle("实时交通开启");
<span style="white-space:pre">			</span>} else {
<span style="white-space:pre">				</span>mBaiduMap.setTrafficEnabled(true);
<span style="white-space:pre">				</span>item.setTitle("实时交通关闭");
<span style="white-space:pre">			</span>}
<span style="white-space:pre">			</span>break;
<span style="white-space:pre">		</span>}
<span style="white-space:pre">		</span>return super.onOptionsItemSelected(item);
<span style="white-space:pre">	</span>}


<span style="white-space:pre">	</span>public class LoadDataTask extends AsyncTask<Integer, Void, Integer>
<span style="white-space:pre">			</span>implements OnMarkerClickListener {


<span style="white-space:pre">		</span>@Override
<span style="white-space:pre">		</span>protected Integer doInBackground(Integer... params) {
<span style="white-space:pre">			</span>// TODO Auto-generated method stub
<span style="white-space:pre">			</span>switch (params[0]) {
<span style="white-space:pre">			</span>case LOAD_PROVINCE:
<span style="white-space:pre">				</span>mBaiduMap.clear();


<span style="white-space:pre">				</span>try {


<span style="white-space:pre">					</span>citys = db.findAll(Selector.from(Parent.class).where(
<span style="white-space:pre">							</span>"level", "=", 2));
<span style="white-space:pre">					</span>for (int i = 0; i < citys.size(); i++) {
<span style="white-space:pre">						</span>addProvince(new LatLng(citys.get(i).getLatitude(),
<span style="white-space:pre">								</span>citys.get(i).getLongitude()), 100);


<span style="white-space:pre">					</span>}


<span style="white-space:pre">				</span>} catch (DbException e) {
<span style="white-space:pre">					</span>// TODO Auto-generated catch block
<span style="white-space:pre">					</span>e.printStackTrace();
<span style="white-space:pre">				</span>}


<span style="white-space:pre">				</span>return RESULT_PROVINCE;


<span style="white-space:pre">			</span>case LOAD_COUNTRYS:
<span style="white-space:pre">				</span>mBaiduMap.clear();
<span style="white-space:pre">				</span>try {


<span style="white-space:pre">					</span>countrys = db.findAll(Selector.from(Parent.class).where(
<span style="white-space:pre">							</span>"level", "=", 3));
<span style="white-space:pre">					</span>for (int i = 0; i < countrys.size(); i++) {
<span style="white-space:pre">						</span>addCountry(new LatLng(countrys.get(i).getLatitude(),
<span style="white-space:pre">								</span>countrys.get(i).getLongitude()), 50);
<span style="white-space:pre">					</span>}


<span style="white-space:pre">				</span>} catch (DbException e) {
<span style="white-space:pre">					</span>// TODO Auto-generated catch block
<span style="white-space:pre">					</span>e.printStackTrace();
<span style="white-space:pre">				</span>}
<span style="white-space:pre">				</span>return RESULT_COUNTRYS;


<span style="white-space:pre">			</span>case LOAD_POINTS:
<span style="white-space:pre">				</span>// FLAG == DITU:拖拽地图动作; FLAG == 0:点击标记点动作;
<span style="white-space:pre">				</span>if (FLAG == DITU) {


<span style="white-space:pre">					</span>mBaiduMap.clear();
<span style="white-space:pre">					</span>Projection projection = mBaiduMap.getProjection();
<span style="white-space:pre">					</span>Point p = null;
<span style="white-space:pre">					</span>// 每次生成markerList先清空,要不然每次都增加100,造成很多很多点
<span style="white-space:pre">					</span>markerList.clear();
<span style="white-space:pre">					</span>for (int i = 0; i < 100; i++) {


<span style="white-space:pre">						</span>markerList.add(new LatLng(
<span style="white-space:pre">								</span>30.2561160000 + Math.random(),
<span style="white-space:pre">								</span>120.1555860000 + Math.random()));


<span style="white-space:pre">					</span>}
<span style="white-space:pre">					</span>Log.e("markerList.size", String.valueOf(markerList.size()));
<span style="white-space:pre">					</span>// 每次生成markerListInView先清空,要不然造成很多很多点
<span style="white-space:pre">					</span>markerListInView.clear();
<span style="white-space:pre">					</span>for (LatLng ltl : markerList) {


<span style="white-space:pre">						</span>// .toScreenLocation返回一个从地图位置转换来的屏幕位置。这个屏幕位置是相对于地图的左上角的,不是相对于整个屏幕的。
<span style="white-space:pre">						</span>p = projection.toScreenLocation(ltl);
<span style="white-space:pre">						</span>if (p.x < 0 || p.y < 0 || p.x > width || p.y > height) {
<span style="white-space:pre">							</span>// 不添加到计算的列表中
<span style="white-space:pre">						</span>} else {
<span style="white-space:pre">							</span>markerListInView.add(ltl);
<span style="white-space:pre">						</span>}
<span style="white-space:pre">					</span>}
<span style="white-space:pre">					</span>for (int j = 0; j < markerListInView.size(); j++) {
<span style="white-space:pre">						</span>addPoint(markerListInView.get(j), "租");
<span style="white-space:pre">					</span>}
<span style="white-space:pre">					</span>Log.e("markerListInView.size",
<span style="white-space:pre">							</span>String.valueOf(markerListInView.size()));


<span style="white-space:pre">				</span>}
<span style="white-space:pre">				</span>mBaiduMap.setOnMarkerClickListener(this);


<span style="white-space:pre">				</span>FLAG = DITU;


<span style="white-space:pre">			</span>}
<span style="white-space:pre">			</span>return null;
<span style="white-space:pre">		</span>}


<span style="white-space:pre">		</span>@Override
<span style="white-space:pre">		</span>public boolean onMarkerClick(Marker marker) {
<span style="white-space:pre">			</span>// TODO Auto-generated method stub
<span style="white-space:pre">			</span>FLAG = MARK;
<span style="white-space:pre">			</span>// 如果marker的title是“随机”才设置弹出框
<span style="white-space:pre">			</span>if (marker.getTitle().equals("随机")) {
<span style="white-space:pre">				</span>marker.setIcon(BitmapDescriptorFactory.fromView(getView("选",
<span style="white-space:pre">						</span>R.drawable.icon_geo)));


<span style="white-space:pre">				</span>mRelativeLayout.setVisibility(View.VISIBLE);
<span style="white-space:pre">				</span>popInfo(mRelativeLayout, "测试地址", marker.getPosition());
<span style="white-space:pre">				</span>MapStatus ms = new MapStatus.Builder().target(
<span style="white-space:pre">						</span>new LatLng(marker.getPosition().latitude - 0.063, marker
<span style="white-space:pre">								</span>.getPosition().longitude)).build();
<span style="white-space:pre">				</span>mBaiduMap.animateMapStatus(MapStatusUpdateFactory
<span style="white-space:pre">						</span>.newMapStatus(ms));
<span style="white-space:pre">			</span>}


<span style="white-space:pre">			</span>return false;
<span style="white-space:pre">		</span>}


<span style="white-space:pre">	</span>}


}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值