android高德地图marker多个点

本人也有做过百度地图的marker,但是百度地图的引用实在很麻烦,各种导包,so,jar,还有配置。所以高德就比较方便了。

只需引用下面的几句  定位  地图 导航  全都ok!

compile 'com.amap.api:3dmap:5.6.0'
compile 'com.amap.api:location:3.7.0'
compile 'com.amap.api:search:5.5.0'
然后设置

<meta-data
    android:name="com.amap.api.v2.apikey"
    android:value="官网申请的value" />

首先我们得写一个mapView和Amap

private MapView mapView;
private AMap aMap;
然后对地图进行设置

 aMap = mapView.getMap();
 MyLocationStyle myLocationStyle = new MyLocationStyle();
 myLocationStyle.strokeColor(Color.TRANSPARENT);// 设置圆形的边框颜色
 myLocationStyle.radiusFillColor(Color.argb(0, 0, 0, 0));// 设置圆形的填充颜色
 myLocationStyle.strokeWidth(1.0f);// 设置圆形的边框粗细
 aMap.setMyLocationStyle(myLocationStyle);
 aMap.getUiSettings().setMyLocationButtonEnabled(true);
 aMap.moveCamera(CameraUpdateFactory.newLatLngZoom(HEXIN, 4));
 aMap.setMapType(MAP_TYPE_NORMAL);

从服务器拿到的肯定是一组数据,我们把它转化为一个实体类的集合

List<MakerListEntity> list=new ArrayList;
接下来我们就在地图上marker了

for (int i = 0; i < list.size(); i++) {
    MarkerOptions markerOption = new MarkerOptions();
    markerOption.position(new LatLng(Double.parseDouble(list.get(i).getLat()),
Double.parseDouble(list.get(i).getLng())));
 markerOption.draggable(false);//设置Marker可拖动
markerOption.title(String.valueOf(i));
    markerOption.icon(BitmapDescriptorFactory.fromView(getMyView(list.get(i).getTitle )));
    aMap.addMarker(markerOption);
}

注意我的代码,我设置了一个markerOption.title(String.valueOf(i));其实是给每个marker一个标识点,到时候,你点击marker就知道是哪个marker了。里面的 return true 的意思是点击marker,marker不成为地图的中心坐标,反之,成为中心坐标。

aMap.setOnMarkerClickListener(new AMap.OnMarkerClickListener() {
    @Override
    public boolean onMarkerClick(Marker marker) {
        String id=marker.getTitle();                                                                            

MarkerListEntity listEntity=list.get(Integer.valueOf(id));//拿到这个实体类了  就可以做操作了
        return true;
    }
});
在marker点的时候我们需要自定义marker点,有时候可以通过一个布局来动态设置,我把getMyView代码也给贴出来吧,

我这里的布局仅仅是一个TextView,你可以根据不同的需求设置不同的自定义marker图标.


markerOption.icon(BitmapDescriptorFactory.fromView(getMyView(mFootPrintEntityList.get(i).getTitle )));
protected View getMyView(String pm_val) {
    View view = getActivity().getLayoutInflater().inflate(R.layout.mymarker, null);
    TextView tv_val = (TextView) view.findViewById(R.id.marker_tv_val);
    tv_val.setText(pm_val);
    return view;
}

感谢大家的支持,接下来是效果图了,有兴趣加我QQ(971873592),一起学习。

android高德地图marker多个点