百度地图在android中的使用 实现多个覆盖物

来源:互联网 发布:淘宝350装修模板 编辑:程序博客网 时间:2024/06/08 04:47

这里是我自己写的一个小demo,可以供大家参考

在这里面我使用的是二维数组保存的经纬度,到时候大家可以根据自己的需求更改

果断贴上代码

布局我用的是最简单的布局

<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="fill_parent"    android:layout_height="fill_parent"    android:background="#f3f2f2"    android:orientation="vertical">    <com.baidu.mapapi.map.MapView        android:id="@+id/map"        android:layout_width="match_parent"        android:layout_height="match_parent"        android:clickable="true"/></RelativeLayout>贴上activity
package com.sxyrd.yrdapp.ui;import android.graphics.Point;import android.os.Bundle;import android.view.View;import android.widget.Button;import com.baidu.mapapi.map.BaiduMap;import com.baidu.mapapi.map.BitmapDescriptor;import com.baidu.mapapi.map.BitmapDescriptorFactory;import com.baidu.mapapi.map.InfoWindow;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.model.LatLng;import com.sxyrd.yrdapp.R;import com.sxyrd.yrdapp.base.BaseActivity;import com.sxyrd.yrdapp.utils.Utils;/** * Created by Fly0116 on 2016/4/26 0026. * 商家地图显示 */public class BusMapActivity extends BaseActivity {    private MapView mMapView;    BaiduMap mBaiduMap = null;    Marker marker=null;    @Override    protected int getLayoutId() {        return R.layout.activity_bussion_map;    }    @Override    public void initView() {        mMapView = (MapView) findViewById(R.id.map);        mBaiduMap = mMapView.getMap();    }    @Override    public void initData() {        //创建InfoWindow展示的view        double[][] numsix={{39.93923,116.357428},{39.91923, 116.327428},                {39.89923, 116.347428}, {39.89923, 116.367428},                {39.91923, 116.397428},{39.963175, 116.400244},                {39.86923, 116.397428}};        //构建Marker图标        BitmapDescriptor bitmap = BitmapDescriptorFactory                .fromResource(R.mipmap.icon_gcoding);        for (int i=0;i<numsix.length;i++){            LatLng pt = new LatLng(numsix[i][0], numsix[i][1]);            Button button = new Button(getApplicationContext());            button.setId(2000+i);            button.setBackgroundResource(R.mipmap.popu);            button.setText("餐厅标识"+(i+1));            button.setPadding(5,0,5,0);            button.setTextColor(getResources().getColor(R.color.black));            final int finalI = i+1;            //创建InfoWindow , 传入 view, 地理坐标, y 轴偏移量            InfoWindow mInfoWindow = new InfoWindow(button, pt, -47);            //构建MarkerOption,用于在地图上添加Marker            OverlayOptions option = new MarkerOptions()                    .position(pt)                    .icon(bitmap);            //在地图上添加Marker,并显示            mBaiduMap.showInfoWindow(mInfoWindow);            marker = (Marker) (mBaiduMap.addOverlay(option));            Bundle bundle = new Bundle();            bundle.putSerializable("info", "餐厅"+finalI);            marker.setExtraInfo(bundle);        }        mBaiduMap.setOnMarkerClickListener(new BaiduMap.OnMarkerClickListener() {            @Override            public boolean onMarkerClick(Marker marker) {                final String name= (String) marker.getExtraInfo().get("info");                Button button = new Button(getApplicationContext());                button.setBackgroundResource(R.mipmap.popu);                button.setText("餐厅标识"+name);                button.setPadding(5,0,5,8);                button.setTextColor(getResources().getColor(R.color.black));                final LatLng ll = marker.getPosition();                Point p = mBaiduMap.getProjection().toScreenLocation(ll);                LatLng llInfo = mBaiduMap.getProjection().fromScreenLocation(p);                InfoWindow mInfoWindow = new InfoWindow(button, llInfo, -47);                mBaiduMap.showInfoWindow(mInfoWindow);                button.setOnClickListener(new View.OnClickListener() {                    @Override                    public void onClick(View v) {                        Utils.toast("餐厅标识"+name);                        mBaiduMap.hideInfoWindow();                    }                });                return true;            }        });    }    @Override    public void onClick(View v) {    }}

以下是我项目里使用的jar

大家可以参考

如果有什么问题,可以留言,相互探讨

0 0
原创粉丝点击