概述

最后更新时间:2025-03-19

推荐上车点sdk是针对于出行场景(推荐上车点)开发的SDK。该sdk为开发者提供了上车点的数据拉取、自定义展示、自动吸附的能力,节约用户的开发成本。
注意:此sdk需要配合地图sdk使用。


密钥申请


与腾讯地图key一致,如已申请,可直接使用。如未申请,可在官网申请
如果在官网开启签名校验的方式,上车点sdk需要配合使用setWebServiceKey方法。

// 开启签名校验
previewMapManager.setWebServiceKey(“sn key”, true)


配置文件


添加权限。需要主要的是在6.0+系统需要动态获取权限。

<!-- 通过网络得到粗略位置 -->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<!--获取 device id 辨别设备-->
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<!--需要外部存储写权限用于保存地图缓存-->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

需要在AndroidMainfest文件中的节点下添加key:

<meta-data
    android:name="com.tencent.map.recospot.api_key"
    android:value="用户申请key,与地图key一致"/>

<meta-data
    android:name="com.tencent.map.geo.api.key"
    android:value="检索key,与地图key一致"/>

在build gradle中依赖如下:

// 腾讯地图sdk
implementation 'com.tencent.map:sdk-compat-v4:4.2.9'
implementation 'com.tencent.map:tencent-map-vector-sdk:4.2.9'
// 基础库
implementation 'com.tencent.map:tencent-map-nav-surport:1.0.2.1'
// 目前只支持aar方式,需配合地图版本4.2.9          
implementation files('libs/pickupspot1.0.0.2.aar')
// 检索sdk
implementation('com.tencent.map:tencent-navi-search:1.0.0.2') {exclude group: 'com.android.support' }


代码混淆


在proguard-rules.pro中添加混淆代码。

# 地图
-keep class com.tencent.tencentmap.**{*;}
-keep class com.tencent.map.**{*;}
-keep class com.tencent.beacontmap.**{*;}
-keep class com.tencent.tencentmap.mapsdk.maps.BaseMapView{*;}
-keep class navsns.**{*;}
-dontwarn com.qq.**
-dontwarn com.tencent.beacon.**

# 上车点
-keep class com.tencent.recommendspot.**{*;}


初始化


上车点sdk提供了PointMarkerView默认显示大头针,并实现了相应的加载和跳动动画,但更推荐用户使用marker的方式来实现大头针,因为地图marker可提供点击popWindow。

<com.tencent.recommendspot.ui.PointMarkerView
    android:id="@+id/point_marker"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerInParent="true"/>

上车点sdk的初始化方法。需要注意地图的生命周期方法不要忘记调用。

pointMarkerView = findViewById(R.id.point_marker);// 推荐marker的方式
	
spotManager = new TMMRecommendedBoardManager(tencentMap);
TMMRecommendedBoardManager.mContext = this;
	
/**
 * 关联cameraChange监听
 */
tencentMap.setOnCameraChangeListener(new TencentMap.OnCameraChangeListener() {
    @Override
    public void onCameraChange(CameraPosition cameraPosition) {
        spotManager.onCamerChangeListener(cameraPosition);
    }

    @Override
    public void onCameraChangeFinished(CameraPosition cameraPosition) {
        spotManager.onCameraChangeFinish(cameraPosition);
    }
});

请求数据,需要注意的是,在sdk内部已经对map onCameraChanged进行了监听,当地图移动会自动请求数据。

// 发起请求
spotManager.getRecommendSpot(spotManager.getBoardOption()
    .latlng(latLng));


参数配置


TMMRecommendedBoardManager部分使用方法示例如下:

public void clear(View view) {
    if(pickupSpotManager != null)
    spotManager.removeSpotMarkers();// 移除当前上车点
}
public void register() {
    spotManager.registerRecommendSpotListener(new TMMRBDataManager.TMMRecommendedBoardListener() {
    
    @Override
    public void onRecommendspotSuc(List<TMMRecommendSpotBean.BoardingPointBean> bpBeans) {
        Log.e("tag1234", "上车点 bpBeans : " + bpBeans.toString());
    }

    @Override
    public void onRecommendspotFail(int errorCode, String errorMsg) {
        Log.e("tag1234", "上车点 errorCode : " + errorCode + ", errorMsg : " + errorMsg);
    }
    });
}

TMMPointAnimaListener配合PointMarkerView的使用代码使用如下:

void handleAnima() {
    if(pointMarkerView == null || pointMarkerView == null)
        return;
        spotManager.setPointAnimaListener(new TMMRecommendedBoardManager.TMMPointAnimaListener() {

        @Override
        public void startLoadingAnima() {
            pointMarkerView.startLoadingAnima();
        }

        @Override
        public void stopLoadingAnima() {
            pointMarkerView.stopLoadingAnima();
        }

        @Override
        public void startRippleAnima() {
            pointMarkerView.startRippleAnima();
        }

        @Override
        public void stopRippleAnima() {
            pointMarkerView.stopRippleAnima();
        }

        @Override
        public ObjectAnimator transactionAnimWithMarker() {
            if(pointMarkerView != null)
                return pointMarkerView.transactionAnimWithMarker();

            return null;
            }
    });
}

常规属性

TMMRecommendedBoardManager进行的常规属性配置的方法。

spotManager.getManagerConfig()
    .setMinMapZoomLevel(16)// 展示上车点的最小地图级别
    .isAbsorbed(true)// 是否吸附
    .setAbsorbThreshHold(50)// 吸附阈值
    .isTraHubVisiable(true) // 是否使用大型枢纽接口
    .isRecommendSpotDefaultUI(true); // 是否使用默认推荐上车点UI

请求参数

TMMRecommendedBoardManager进行的请求参数配置的方法。

spotManager.getBoardOption()
    .limit(3)
    .latlng(latlng);

UI属性

TMMRecommendedBoardManager进行的上车点UI配置的方法。

spotManager.getUiStyle()
    .setTextSize(CommentUtils.sp2px(mContext.getApplicationContext(), 13))// 上车点字体大小
    .setTextColor(0xFF3cbca3)// 上车点文字颜色
    .setMaxWordsPerLine(8);// 单行最大字数


接口文档


详情请参考接口文档

SDK下载

AAR

本页内容