百度地圖在android中的使用 實現多個覆蓋物

這裏是我自己寫的一個小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

大家可以參考

如果有什麼問題,可以留言,相互探討

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章