zoukankan      html  css  js  c++  java
  • 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 }
  • 相关阅读:
    leetcode1627 带阈值的图连通性
    leetcode402 移掉k位数字
    Python-Hello world!
    初识Python-Python介绍
    Python初探-购物车程序
    初识Docker
    Mybatis的工作原理
    Mybatis的逆向工程
    Mybatis的简介
    常量、变量&数据类型
  • 原文地址:https://www.cnblogs.com/my334420/p/7112428.html
Copyright © 2011-2022 走看看