最后更新时间: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);
TMMRecommendedBoardManager进行的上车点UI配置的方法。
spotManager.getUiStyle()
.setTextSize(CommentUtils.sp2px(mContext.getApplicationContext(), 13))// 上车点字体大小
.setTextColor(0xFF3cbca3)// 上车点文字颜色
.setMaxWordsPerLine(8);// 单行最大字数
详情请参考接口文档。
有帮助
没帮助