Android_百度地图基本用法5

  1 /*
  2  *1.添加覆盖物及其图片预览显示
  3  * 
  4  * */
  5 public class MainActivity extends Activity {
  6     MapView mapView;
  7     BaiduMap mBaiduMap;
  8 
  9     // 覆盖物相关
 10     private BitmapDescriptor mMarker;
 11     private RelativeLayout markly;
 12 
 13     @Override
 14     protected void onCreate(Bundle savedInstanceState) {
 15         super.onCreate(savedInstanceState);
 16         SDKInitializer.initialize(getApplicationContext());
 17         requestWindowFeature(Window.FEATURE_NO_TITLE);
 18         setContentView(R.layout.fragment_main);
 19         mapView = (MapView) findViewById(R.id.bmapView);
 20         mBaiduMap = mapView.getMap();
 21         // 设置地图标尺500m
 22         MapStatusUpdate msu = MapStatusUpdateFactory.zoomTo(15.0f);
 23         mBaiduMap.setMapStatus(msu);
 24 
 25         // 覆盖物
 26         mMarker = BitmapDescriptorFactory.fromResource(R.drawable.maker);
 27         markly = (RelativeLayout) findViewById(R.id.mark);
 28         mBaiduMap.setOnMarkerClickListener(new OnMarkerClickListener() {
 29 
 30             @Override
 31             public boolean onMarkerClick(Marker arg0) {
 32                 Bundle exinfo = arg0.getExtraInfo();
 33                 Info info = (Info) exinfo.getSerializable("info");
 34 
 35                 ImageView image = (ImageView) markly.findViewById(R.id.info);
 36                 TextView distance = (TextView) markly
 37                         .findViewById(R.id.infodistance);
 38                 TextView name = (TextView) markly.findViewById(R.id.infoname);
 39                 TextView zan = (TextView) markly.findViewById(R.id.infozan);
 40 
 41                 image.setImageResource(info.getImgId());
 42                 distance.setText(info.getDistance());
 43                 name.setText(info.getName());
 44                 zan.setText(info.getZan() + "");
 45 
 46                 InfoWindow infoWindow;
 47                 TextView tv = new TextView(MainActivity.this);
 48                 tv.setBackgroundResource(R.drawable.location_tips);
 49                 tv.setPadding(30, 20, 30, 50);
 50                 tv.setText(info.getName());
 51                 tv.setTextColor(Color.parseColor("#ffffff"));
 52                 final LatLng latLng = arg0.getPosition();
 53                 Point point = mBaiduMap.getProjection()
 54                         .toScreenLocation(latLng);
 55                 point.y -= 47;
 56                 LatLng ll = mBaiduMap.getProjection().fromScreenLocation(point);
 57 
 58                 infoWindow = new InfoWindow(tv, ll, 47);
 59                 mBaiduMap.showInfoWindow(infoWindow);
 60                 markly.setVisibility(View.VISIBLE);
 61                 return true;
 62             }
 63         });
 64 
 65         mBaiduMap.setOnMapClickListener(new OnMapClickListener() {
 66 
 67             @Override
 68             public boolean onMapPoiClick(MapPoi arg0) {
 69                 // TODO Auto-generated method stub
 70                 return false;
 71             }
 72 
 73             @Override
 74             public void onMapClick(LatLng arg0) {
 75                 markly.setVisibility(View.GONE);
 76                 mBaiduMap.hideInfoWindow();
 77             }
 78         });
 79 
 80     }
 81 
 82     public void click(View view) {
 83         switch (view.getId()) {
 84 
 85         case R.id.add_overlay:
 86             addOverlays(Info.infos);
 87 
 88             break;
 89         }
 90     }
 91 
 92     // 添加覆盖物
 93     private void addOverlays(List<Info> infos) {
 94         mBaiduMap.clear();
 95         LatLng latLng = null;
 96         Marker marker = null;
 97         OverlayOptions options;
 98         for (Info info : infos) {
 99             // 经纬度
100             latLng = new LatLng(info.getLatitude(), info.getLongitude());
101             // 图标
102             options = new MarkerOptions().position(latLng).icon(mMarker)
103                     .zIndex(5);
104             marker = (Marker) mBaiduMap.addOverlay(options);
105 
106             Bundle arg0 = new Bundle();
107             arg0.putSerializable("info", info);
108             marker.setExtraInfo(arg0);
109         }
110         MapStatusUpdate msu = MapStatusUpdateFactory.newLatLng(latLng);
111         mBaiduMap.setMapStatus(msu);
112     }
113 
114     @Override
115     protected void onResume() {
116 
117         super.onResume();
118         mapView.onResume();
119     }
120 
121     @Override
122     protected void onPause() {
123         // TODO Auto-generated method stub
124         super.onPause();
125         mapView.onPause();
126     }
127 
128     @Override
129     protected void onDestroy() {
130         // TODO Auto-generated method stub
131         super.onDestroy();
132         mapView.onDestroy();
133     }
134 
135 }

//数据源

 1 public class Info implements Serializable{
 2     
 3 private double latitude;
 4 private double longitude;
 5 private int  imgId;
 6 private String name;
 7 private String distance;
 8 private int zan;
 9 public static List<Info>infos=new ArrayList<Info>();
10 static
11 {
12     infos.add(new Info(34.242652, 108.971171, R.drawable.a01, "英伦贵族小旅馆",
13             "距离209米", 1456));
14     infos.add(new Info(34.242952, 108.972171, R.drawable.a02, "沙井国际洗浴会所",
15             "距离897米", 456));
16     infos.add(new Info(34.242852, 108.973171, R.drawable.a03, "五环服装城",
17             "距离249米", 1456));
18     infos.add(new Info(34.242152, 108.971971, R.drawable.a04, "老米家泡馍小炒",
19             "距离679米", 1456));
20 }
21 public Info(double latitude, double longitude, int imgId, String name,
22         String distance, int zan) {
23     
24     this.latitude = latitude;
25     this.longitude = longitude;
26     this.imgId = imgId;
27     this.name = name;
28     this.distance = distance;
29     this.zan = zan;
30 }
31 public double getLatitude() {
32     return latitude;
33 }
34 public void setLatitude(double latitude) {
35     this.latitude = latitude;
36 }
37 public double getLongitude() {
38     return longitude;
39 }
40 public void setLongitude(double longitude) {
41     this.longitude = longitude;
42 }
43 public int getImgId() {
44     return imgId;
45 }
46 public void setImgId(int imgId) {
47     this.imgId = imgId;
48 }
49 public String getName() {
50     return name;
51 }
52 public void setName(String name) {
53     this.name = name;
54 }
55 public String getDistance() {
56     return distance;
57 }
58 public void setDistance(String distance) {
59     this.distance = distance;
60 }
61 public int getZan() {
62     return zan;
63 }
64 public void setZan(int zan) {
65     this.zan = zan;
66 }
67 }
原文地址:https://www.cnblogs.com/my334420/p/7112428.html