高德地图上添加多个自定义的marker标记,可以用不同的图标来区分不同的种类,并且点击某个marker在marker上方弹窗显示信息,有系统弹窗,也可设置自定义弹窗。

先来张效果图看一下

创建类文件AddMarkerActivity.java

package com.junto.gdmaptest.activity;import android.annotation.SuppressLint;
import android.app.Activity;
import android.graphics.BitmapFactory;
import android.graphics.Color;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.util.Log;
import android.view.View;
import android.widget.TextView;import com.amap.api.maps.AMap;
import com.amap.api.maps.CameraUpdateFactory;
import com.amap.api.maps.MapView;
import com.amap.api.maps.model.BitmapDescriptorFactory;
import com.amap.api.maps.model.LatLng;
import com.amap.api.maps.model.Marker;
import com.amap.api.maps.model.MarkerOptions;
import com.amap.api.maps.model.MyLocationStyle;
import com.junto.gdmaptest.R;
import com.junto.gdmaptest.info.MakerListEntity;
import com.junto.gdmaptest.info.ShowPopWindow;import java.util.ArrayList;
import java.util.List;import static com.amap.api.maps.AMap.MAP_TYPE_NORMAL;/*** Created by WangJinyong on 2018/12/4.* 地图上添加marker标记*/public class AddMarkerActivity extends Activity {private MapView mapView;private AMap aMap;private MyLocationStyle myLocationStyle;List<MakerListEntity> list;private MarkerOptions markerOption;@Overrideprotected void onCreate(@Nullable Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_addmarker);mapView = findViewById(R.id.mapView);mapView.onCreate(savedInstanceState);initView();}@Overrideprotected void onResume() {super.onResume();mapView.onResume();}@Overrideprotected void onPause() {super.onPause();mapView.onPause();}@Overrideprotected void onDestroy() {super.onDestroy();mapView.onDestroy();}@Overrideprotected void onSaveInstanceState(Bundle outState) {super.onSaveInstanceState(outState);mapView.onSaveInstanceState(outState);}private void initView() {aMap = mapView.getMap();// 如果要设置定位的默认状态,可以在此处进行设置myLocationStyle = new MyLocationStyle();myLocationStyle.strokeColor(Color.TRANSPARENT);// 设置圆形的边框颜色myLocationStyle.radiusFillColor(Color.argb(0, 0, 0, 0));// 设置圆形的填充颜色myLocationStyle.strokeWidth(1.0f);// 设置圆形的边框粗细aMap.setMyLocationStyle(myLocationStyle);aMap.setMyLocationStyle(myLocationStyle.myLocationType(MyLocationStyle.LOCATION_TYPE_LOCATE));aMap.getUiSettings().setMyLocationButtonEnabled(true);// 设置默认定位按钮是否显示aMap.setMyLocationEnabled(true);// 设置为true表示显示定位层并可触发定位,false表示隐藏定位层并不可触发定位,默认是falseaMap.setMapType(MAP_TYPE_NORMAL);aMap.moveCamera(CameraUpdateFactory.zoomTo(18));//地图默认缩放比例markerOption = new MarkerOptions();list = new ArrayList<>();setData();for (int i = 0; i < list.size(); i++) {markerOption.position(new LatLng(Double.parseDouble(list.get(i).getLat()), Double.parseDouble(list.get(i).getLng())));markerOption.draggable(false);//设置Marker可拖动markerOption.title(list.get(i).getTitle());//设置标题markerOption.snippet(list.get(i).getTitle());//设置内容
//            markerOption.draggable(true);//设置Marker可拖动
//            markerOption.setFlat(true);//将Marker设置为贴地显示,可以双指下拉地图查看效果
//            markerOption.icon(BitmapDescriptorFactory.fromView(getMyView(list.get(i).getTitle())));if (i==0){markerOption.icon(BitmapDescriptorFactory.fromBitmap(BitmapFactory.decodeResource(getResources(),R.mipmap.amap_car)));}if (i==1){markerOption.icon(BitmapDescriptorFactory.fromBitmap(BitmapFactory.decodeResource(getResources(),R.mipmap.amap_bus)));}if (i==2){markerOption.icon(BitmapDescriptorFactory.fromView(getMyView()));}aMap.addMarker(markerOption);}//设置自定义弹窗aMap.setInfoWindowAdapter(new CustomInfoWindowAdapter(this));aMap.setOnMarkerClickListener(new AMap.OnMarkerClickListener() {@SuppressLint("LongLogTag")@Overridepublic boolean onMarkerClick(Marker marker) {
//                String id = marker.getTitle();
//                MakerListEntity listEntity = list.get(Integer.valueOf(id));//拿到这个实体类了  就可以做操作了
//                Log.e("setOnMarkerClickListener","Lat="+listEntity.getLat()+"Lng="+listEntity.getLng()+"Title="+listEntity.getTitle());
//                Log.e("setOnMarkerClickListener","id="+id);Log.e("setOnMarkerClickListener", "Marker被点击了");return false;//return true 的意思是点击marker,marker不成为地图的中心坐标,反之,成为中心坐标。}});aMap.setOnInfoWindowClickListener(new AMap.OnInfoWindowClickListener() {@Overridepublic void onInfoWindowClick(Marker marker) {Log.e("onInfoWindowClick","ionInfoWindowClick");}});}protected View getMyView(String pm_val) {View view = getLayoutInflater().inflate(R.layout.mymarker, null);TextView tv_val = view.findViewById(R.id.marker_tv_val);tv_val.setText(pm_val);return view;}protected View getMyView() {View view = getLayoutInflater().inflate(R.layout.mymarker, null);return view;}private void setData(){MakerListEntity makerListEntity1 = new MakerListEntity();makerListEntity1.setLat("39.722295");makerListEntity1.setLng("115.994487");makerListEntity1.setTitle("marker1");MakerListEntity makerListEntity2 = new MakerListEntity();makerListEntity2.setLat("39.722363");makerListEntity2.setLng("115.994118");makerListEntity2.setTitle("marker2");MakerListEntity makerListEntity3 = new MakerListEntity();makerListEntity3.setLat("39.722444");makerListEntity3.setLng("115.994237");makerListEntity3.setTitle("marker3");list.add(makerListEntity1);list.add(makerListEntity2);list.add(makerListEntity3);}
}

布局文件activity_addmarker.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"><com.amap.api.maps.MapViewandroid:id="@+id/mapView"android:layout_width="match_parent"android:layout_height="match_parent"/></LinearLayout>

里面用到的存放信息的实体类MarkerListEntity

package com.junto.gdmaptest.info;/*** Created by WangJinyong on 2018/12/4.*/public class MakerListEntity {private String Lat;private String Lng;private String Title;public String getLat() {return Lat;}public void setLat(String lat) {Lat = lat;}public String getLng() {return Lng;}public void setLng(String lng) {Lng = lng;}public String getTitle() {return Title;}public void setTitle(String title) {Title = title;}
}

设置点击marker的自定义弹窗CustomInfoWindowdapter

package com.junto.gdmaptest.activity;import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.TextView;import com.amap.api.maps.AMap;
import com.amap.api.maps.model.Marker;
import com.junto.gdmaptest.R;/*** Created by WangJinyong on 2018/12/4.* 自定义地图信息框*/public class CustomInfoWindowAdapter implements AMap.InfoWindowAdapter {private Context context;public CustomInfoWindowAdapter(Context context) {this.context = context;}@Overridepublic View getInfoWindow(Marker marker) {//map_info_window布局里background  和 divider 设置InfoWindow的背景样式(颜色、图片均可),否者会使用高德默认背景View view = LayoutInflater.from(context).inflate(R.layout.map_info_window, null);setViewContent(marker, view);return view;}//提供了一个给默认信息窗口定制内容的方法。如果用自定义的布局,不用管这个方法。@Overridepublic View getInfoContents(Marker marker) {return null;}//这个方法根据自己的实体信息来进行相应控件的赋值private void setViewContent(Marker marker, View view) {//实例:TextView tv_lat = view.findViewById(R.id.tv_lat);tv_lat.setText("lat=" + marker.getPosition().latitude);TextView tv_lng = view.findViewById(R.id.tv_lng);tv_lng.setText("lng=" + marker.getPosition().longitude);TextView tv_title = view.findViewById(R.id.tv_title);tv_title.setText("title=" + marker.getTitle());}
}

弹窗显示样子的布局文件map_nfo_window

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"><!--android:background="@drawable/info_shape"--><!--android:divider="@drawable/line_shape"--><!-- background  和 divider 设置InfoWindow的背景样式(颜色、图片均可),否者会使用高德默认背景--><TextViewandroid:id="@+id/tv_lat"android:layout_width="wrap_content"android:layout_height="wrap_content" /><TextViewandroid:id="@+id/tv_lng"android:layout_width="wrap_content"android:layout_height="wrap_content" /><TextViewandroid:id="@+id/tv_title"android:layout_width="wrap_content"android:layout_height="wrap_content" /></LinearLayout>

在drawable里创建info_shape文件,自定义背景

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"><cornersandroid:radius="10dp"/><strokeandroid:width="1dp"android:color="#666"/><solidandroid:color="#fff"/>
</shape>

在drawable里创建line_shape文件,自定义边框线

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"><sizeandroid:width="100dp"android:height="1dp" /><solid android:color="#666" /></shape>

上面内容就完成了在地图上添加marker标记点了。

(八)高德地图之添加marker标记点相关推荐

  1. android高德marker添加点击,高德地图上添加marker,给每一个marker添加点击事件。...

    高德地图上添加marker,给每一个marker添加点击事件. 高德地图上添加marker,给每一个marker添加点击事件.javascript var watch = [] $.ajax({ ty ...

  2. 只用一个marker 替换 高德_Android基于高德地图完全自定义Marker的实现方法

    前言 相信做地图社交类APP开发的大家都知道,一般情况下,为了整体的美观和用户体验度,我们需要定制化Marker的样式.本文中实现的方式都是基于高德地图的,百度地图也类似,大家可以照葫芦画瓢,废话不多 ...

  3. vue使用高德地图小demo(标记点,画线,3D,叠加图片图层)

    vue使用高德地图小demo(标记点,画线,3D) 这个模式是3D的,可以看到地图是带有一定的倾角的. 注意:3D模式下,是不能够将进行画线的,不能使用PathSimplifier,改成2D可以正常使 ...

  4. 高德地图API 添加标点 自定义标点

    高德地图API 添加标点 自定义标点 在我们创建完地图实例后,就可以在地图中添加遮盖物,覆盖物有多种类型,今天只说点标记 首先构造一个点标记 添加默认样式点标记 // 构造点标记 var marker ...

  5. android定位附近店铺,高德地图怎么添加店铺位置_高德地图定位怎么设置添加自己家店铺位置_攻略...

    高德地图是国内最知名的地图导航软件,基本上每个人的手机上都有这款软件.如今想要方便出行都可以通过高得地图查询位置就可以了,给我们的生活带来了很多的便利.在高德地图上也可以很方便的查询各个地方的店铺,通 ...

  6. 高德地图sdk设置marker并且将设置为地图中心

    高德地图sdk设置marker并且将设置为地图中心,直接在官方demo里改,授权key需要改为自己的. <!doctype html> <html> <head>& ...

  7. js添加多marker 高德地图_高德地图点聚合--Marker多点聚合及多个marker点击事件

    本篇文章主要是高德地图的多点聚合,及多个marker点击事件 以下为简单的模拟数据 soogif (1).gif image.png 具体代码如下 点聚合 html, body, #container ...

  8. 高德地图map.add(marker),marker标记不显示

    今天使用了高德地图的map.add(marker),使用从后端获取的经纬度在地图上面标记一个点,不知道为什么,是按照高德地图的官方文档来得,但是还是一直没有出现标记点,我把js翻来覆去改了好多遍,代码 ...

  9. 高德地图API总结--Marker多点聚合

    Marker多点聚合计算 什么是多点聚合呢?所谓的多点聚合,就是计算地图上一定范围内的点的个数,然和讲所有的点统计的数量显示在范围内设置的marker上:我们需要解决的问题有:1.在地图上划定区域范围 ...

  10. 高德地图自定义车辆定位marker以及弹出框窗口

    地图安装 npm install vue-amap --save 项目中设置高德地图 安装成功后在main.js设置以下内容 import VueAMap from 'vue-amap' Vue.us ...

最新文章

  1. 如何修改路由器和交换机的密码
  2. Apache ZooKeeper - ZK的内存数据 + 持久化事务日志 + 数据快照 初探
  3. tw-wr641g ttl串口
  4. swot分析法案例_新媒体小白如何上手案例分析(SWOT分析法)
  5. 别了,JavaScript;你好,Blazor
  6. python免杀技术---复现+改进----1
  7. 第4章操作系统基础第五版Aimin.rar
  8. 管理开机启动:chkconfig
  9. qt设置行编辑器不可编辑
  10. 数据访问增删改查之单项查询
  11. linux打印软件,KX-MB2033CN Linux
  12. 黑龙江省:到2025年将建成5G基站11.4万个
  13. 一些值得注意的算法题——哈希表
  14. Mysql5.6.23免安装配置
  15. 【Oracle】解锁用户
  16. [转载] python获取set中某些元素_取集合中元素_Python Set集合
  17. 如何使用File APIs来读取文件
  18. Thrift生成java、php代码报错Cannot use reserved language keyword: end
  19. DP入门系列-DP入门指导
  20. 使用iperf测试网络速度--windows

热门文章

  1. 服务器一装2008r2系统就蓝屏,服务器安装2008r2后蓝屏
  2. @Deprecated
  3. libmp4v2的编译及简单DEMO
  4. php控制wifi上网时长,腾达路由器家长控制功能怎么控制孩子上网时间
  5. 哈希表、哈希桶的实现
  6. Mac 平台下功能强大的Shimo软件使用指南
  7. Tensorflow Serving初体验
  8. express实现上传图片到七牛云
  9. 导出表钩子之EAT HOOK解析
  10. 回答缺点?这样回答HR听完直呼大佬!