首先,什么是短链分享?这里引用百度地图官方的说明:
什么是位置短地址分享
位置短地址分享(简称短串分享),是指用户检索得到的每一个地理位置都会对应一条短链接,通过短信、邮件或第三方分享组件,用户可以将该地理信息短链接分享出去,从而实现对地理位置信息的分享。其他用户点击收到的短链接即可调启百度地图客户端或浏览器查看该地理信息。
例如:当用户检索“百度大厦”后会得到短串“http://j.map.baidu.com/BkmBk” ,通过短信将该短串分享后,收到短信的用户点击该链接即可调启百度地图客户端或者浏览器查看“百度大厦”的地理位置信息。
短串分享功能目前开放了“POI检索结果分享”、“路线规划短串分享(驾车、公交、骑行、步行)和“逆地理编码结果分享“等。
大概的意思就是将当前位置信息生成一个短链的形式,可以把这个短链通过微信、QQ、短信等方式分享给朋友,朋友点击链接后会打开浏览器显示你分享的位置。在文章后面可以看到效果图。说了这么多,来看看怎么用吧!
这里来一个官方链接:androidsdk | 百度地图API SDK
第一,先在你的项目中定义一个私有的ShareUrlSearch
private ShareUrlSearch mShareUrlSearch = null;
第二,创建短串检索监听器
/**
* 短串检索监听器
*/
OnGetShareUrlResultListener shareUrlResultListener = new OnGetShareUrlResultListener() {
@Override //这部分是返回POi检索的位置结果
public void onGetPoiDetailShareUrlResult(ShareUrlResult shareUrlResult) {
if (shareUrlResult.error != SearchResult.ERRORNO.NO_ERROR) {
Toast.makeText(MainActivity.this, "抱歉,未找到结果!",
Toast.LENGTH_SHORT).show();
} else {
// 分享短串结果
Intent it = new Intent(Intent.ACTION_SEND);
it.putExtra(Intent.EXTRA_TEXT, "您的朋友通过百度地图SDK与您分享一个位置: "+shareUrlResult.getUrl());
it.setType("text/plain");
startActivity(Intent.createChooser(it, "将短链分享到"));
}
}
@Override //这部分返回的则是逆地理编码的位置结果
public void onGetLocationShareUrlResult(ShareUrlResult shareUrlResult) {
if (shareUrlResult.error != SearchResult.ERRORNO.NO_ERROR) {
Toast.makeText(MainActivity.this, "抱歉,未找到结果!",
Toast.LENGTH_SHORT).show();
} else {
// 分享短串结果
Intent it = new Intent(Intent.ACTION_SEND);
it.putExtra(Intent.EXTRA_TEXT, "您的朋友通过百度地图SDK与您分享一个位置: "+shareUrlResult.getUrl());
it.setType("text/plain");
startActivity(Intent.createChooser(it, "将位置信息分享到"));
}
}
@Override //这里是路径分享,这里根据自己需求进行添加参数,我这里没有用到,所以为空
public void onGetRouteShareUrlResult(ShareUrlResult shareUrlResult) {
}
};
第三,调用分享短链(我这里是设置了一个Button的Click点击事件来调用)
/*******位置分享按钮*********/
public void share (View view) {
// 请求位置信息分享URL
mShareUrlSearch.requestLocationShareUrl(new LocationShareURLOption().location(new LatLng(mCurrentLat, mCurrentLon)).name("").snippet(""));
//通过短URL调起客户端时作为附加信息显示在名称下面
//参数说明
//location():共享点位置(里面设置的是共享点经纬度参数)
//如:location(new LatLng(39.915291, 116.403857)) //天安门广场的经纬度
//name:共享点名称
//如:name("天安门")
//snippet:分享点附加信息
//如:snippet("天安门广场")); //分享点附加信息
//mShareUrlSearch.requestPoiDetailShareUrl(new PoiDetailShareURLOption().poiUid("65e1ee886c885190f60e77ff"));
// 请求poi详情分享URL的时候参数xxxOption中只有一个uid
//这里就是上面提到的Poi位置检索信息,通过分享的uid来进行分享,我的项目中没有使用这个方法,所以这里我注释掉了,大家根据自己需求来使用。
}
}
效果图:
由于我是在模拟器上调试的,所以我把短链放到便签里了,在真机上分享则是弹出分享窗口。可以根据自己需求分享至微信、QQ、短信等等都可以实现。这里只是做个小小演示,功能方面没有任何问题的,大家放心。
代码方面就是这样了,挺简单的对吧?害,自己当时实现这个功能花了不少时间,踩了很多的坑,不过还好,最后还是实现了。最后贴上按钮布局代码吧!
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity"
android:orientation="horizontal">
<!--百度地图控件-->
<com.baidu.mapapi.map.MapView
android:id="@+id/bmapView"
android:layout_width="match_parent"
android:layout_height="fill_parent"
android:layout_gravity="center_horizontal"
android:clickable="true" />
<Button
android:layout_width="140dp"
android:layout_height="wrap_content"
android:layout_marginLeft="190dp"
android:onClick="share"
android:text="短串分享测试"
tools:ignore="OnClick" />
</FrameLayout>
以上就是关于Android百度地图短链分享相关代码了,大家如果有什么问题可以在评论区留言,我看到了会回复大家。