这里是我自己写的一个小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以下是我项目里使用的jarpackage 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) { } }
大家可以参考
如果有什么问题,可以留言,相互探讨