微信公众平台怎么样接入百度地图实现从发送者位置导航到我的位置的功能

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了微信公众平台怎么样接入百度地图实现从发送者位置导航到我的位置的功能相关的知识,希望对你有一定的参考价值。

求大神帮忙下,如何在微信公众平台里面设置地图导航,从发送者位置到我的位置的自动导航啊?
我在百度地图里设置了我的位置,给了我地图的代码,可是我不知道怎么用。是不是有更简单直接的方法,可以让发送位置者地图导航到我的地方啊?
新手真心就指导啊~
PS,我接入了一个聊天机器人的API,里面有发送位置大众点评的功能,没有导航到我的位置的功能,是不是直接在php里面改成百度地图的代码就可以啊?求帮助啊

1、打开百度地图http://map.baidu.com/搜索您需要的地址或公司名称位置。

2、若没有您需要的名称地址,可以点击右上角中的工具--标志--到您的位置,然后标志好之后,点分享即可获取到一个地址。

3、复制通过分享获取的代码,把代码粘贴到浏览器,获取id=后面的代码,替换至地图代码:http://map.baidu.com/mobile/webapp/place/detail/qt=inf&uid=(此处需要更换) /vt=map

把红色区域的代码更换即可

4、把获得的地图代码插入想要显示的地方,如公众平台自定义菜单做为外部链接。
参考技术A Unicode编码转换成gbk后的经典乱码可以把这个改成utf-,就能看到原来的意思,如果是百度 参考技术B 想在公众平台加这么一个功能:用户发送地理位置过来之后,自动回复一个百度--公 参考技术C 我也在寻找

android开发如何用高德地图进行模拟定位.

就一个简单的地图界面,开始时定位到当前位置,通过拖动到想要的位置,点击确定,然后去微信中可以看到自己的位置变成了刚刚拖动的位置了.对这个不是很了解,还请大虾们指点指点,有代码提供最好,万分感谢.

一、 要实现高德地图定位呢,首先需要做好以下几步准备:
1. 在高德开放平台注册帐号

2. 在开发中下载Android平台下的地图SDK和定位SDK文件
进入相关下载下载自己想要的功能或文件,图只是截取了地图SDK的页面,定位SDK也是一样,按自己想要的文件下载。下载完成后解压得到:
- 3D地图包解压后得到:3D地图显示包“AMap_3DMap_VX.X.X_时间.jar”和库文件夹(包含armeabi、arm64-v8a等库文件)。
- 2D地图包解压后得到:2D地图显示包“AMap_2DMap_VX.X.X_时间.jar ”
- 定位SDK下载并解压得到定位包“AMap_Location_V2.x.x.jar“
3. 添加jar包,将jar包放入工程的libs目录下。

对于每个jar文件,右键-选择Add As Library,导入到工程中。或者使用菜单栏 选择 File ->Project Structure->Modules-> Dependencies。点击绿色的加号选择File dependency. 然后选择要添加的jar包即可,此时build.gradle中会自动生成如下信息。

创建自己的应用(创建过程内需要的SHA1已经的博客讲过)

开发环境已经配置好了,接下来就是敲代码了。
二、 首先我们要做的就是将地图显示出来,通过以下几步操作,即可在应用中使用高德地图SDK:
第一步:添加用户key 在工程的“ AndroidManifest.xml ”文件如下代码中添加您的用户 Key。
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"

android:theme="@style/AppTheme">
<meta-data
android:name="com.amap.api.v2.apikey"
android:value="c9df032baec3ec50b1e089768ea4672b" />123456789

第二步:添加所需权限 在工程的“ AndroidManifest.xml ”文件中进行添加。
//地图包、搜索包需要的基础权限

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />

//定位包、导航包需要的额外权限(注:基础权限也需要)
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
<uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />1234567891011121314

第三步:在布局xml文件中添加地图控件。
<com.amap.api.maps2d.MapView
android:id="@+id/map_view"
android:layout_width="match_parent"
android:layout_height="match_parent" />1234

第四步,创建地图Activity,管理地图生命周期。
public class MainActivity extends Activity
private MapView mMapView = null;
@Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//获取地图控件引用
mMapView = (MapView) findViewById(R.id.map_view);
//在activity执行onCreate时执行mMapView.o

mMapView.onCreate(savedInstanceState);

@Override
protected void onDestroy()
super.onDestroy();
//在activity执行onDestroy时执行mMapView.onDestroy(),实现地图生命周期管理
mMapView.onDestroy();

@Override
protected void onResume()
super.onResume();
//在activity执行onResume时执行mMapView.onResume (),实现地图生命周期管理
mMapView.onResume();

@Override
protected void onPause()
super.onPause();
//在activity执行onPause时执行mMapView.onPause (),实现地图生命周期管理
mMapView.onPause();

@Override

protected void onSaveInstanceState(Bundle outState)
super.onSaveInstanceState(outState);
//在activity执行onSaveInstanceState时执行mMapView.onSaveInstanceState (outState),实现地图生命周期管理
mMapView.onSaveInstanceState(outState);


12345678910111213141516171819202122232425262728293031323334353637

注意:一定要有mMapView.onCreate(savedInstanceState);
第二步:启动定位功能:
1. 在主线程中获得地图对象AMap,并设置定位监听且实现LocationSource接口:

public class MainActivity extends Activity implements LocationSource1
if (aMap == null)
aMap = mMapView.getMap();
//设置显示定位按钮 并且可以点击
UiSettings settings = aMap.getUiSettings();
aMap.setLocationSource(this);//设置了定位的监听,这里要实现LocationSource接口
// 是否显示定位按钮
settings.setMyLocationButtonEnabled(true);
aMap.setMyLocationEnabled(true);//显示定位层并且可以触发定位,默认是flase
123456789
2. 配置定位参数,启动定位

//初始化定位

mLocationClient = new AMapLocationClient(getApplicationContext());
//设置定位回调监听,这里要实现AMapLocationListener接口,AMapLocationListener接口只有onLocationChanged方法可以实现,用于接收异步返回的定位结果,参数是AMapLocation类型。
mLocationClient.setLocationListener(this);
//初始化定位参数
mLocationOption = new AMapLocationClientOption();
//设置定位模式为Hight_Accuracy高精度模式,Battery_Saving为低功耗模式,Device_Sensors是仅设备模式
mLocationOption.setLocationMode(AMapLocationClientOption.AMapLocationMode.Hight_Accuracy);
//设置是否返回地址信息(默认返回地址信息)
mLocationOption.setNeedAddress(true);
//设置是否只定位一次,默认为false
mLocationOption.setOnceLocation(false);
//设置是否强制刷新WIFI,默认为强制刷新
mLocationOption.setWifiActiveScan(true);
//设置是否允许模拟位置,默认为false,不允许模拟位置
mLocationOption.setMockEnable(false);
//设置定位间隔,单位毫秒,默认为2000ms
mLocationOption.setInterval(2000);
//给定位客户端对象设置定位参数
mLocationClient.setLocationOption(mLocationOption);
//启动定位
mLocationClient.startLocation();12345678910111213141516171819202122

高精度定位模式:
在这种定位模式下,将同时使用高德网络定位和GPS定位,优先返回精度高的定位

低功耗定位模式:
在这种模式下,将只使用高德网络定位

仅设备定位模式:
在这种模式下,将只使用GPS定位。

3. 实现AMapLocationListener接口,获取定位结果:

public class MainActivity extends Activity implem

@Override
public void onLocationChanged(AMapLocation aMapLocation)
if (aMapLocation != null)
if (aMapLocation.getErrorCode() == 0)
//定位成功回调信息,设置相关消息
aMapLocation.getLocationType();//获取当前定位结果来源,如网络定位结果,详见官方定位类型表
aMapLocation.getLatitude();//获取纬度
aMapLocation.getLongitude();//获取经度
aMapLocation.getAccuracy();//获取精度信息
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = new Date(aMapLocation.getTime());
df.format(date);//定位时间
aMapLocation.getAddress();//地址,如果option中设置isNeedAddress为false,则没有此结果,网络定位结果中会有地址信息,GPS定位不返回地址信息。
aMapLocation.getCountry();//国家信息
aMapLocation.getProvince();//省信息
aMapLocation.getCity();//城市信息
aMapLocation.getDistrict();//城区信息
aMapLocation.getStreet();//街道信息
aMapLocation.getStreetNum();//街道门牌号信息
aMapLocation.getCityCode();//城市编码
aMapLocation.getAdCode();//地区编码

// 如果不设置标志位,此时再拖动地图时,它会不断将地图移动到当前的位置
if (isFirstLoc)
//设置缩放级别
aMap.moveCamera(CameraUpdateFactory.zoomTo(17));
//将地图移动到定位点
aMap.moveCamera(CameraUpdateFactory.changeLatLng(new LatLng(aMapLocation.getLatitude(), aMapLocation.getLongitude())));
//点击定位按钮 能够将地图的中心移动到定位点
mListener.onLocationChanged(aMapLocation);
//获取定位信息
StringBuffer buffer = new StringBuffer();
buffer.append(aMapLocation.getCountry() + ""
+ aMapLocation.getProvince() + ""
+ aMapLocation.getCity() + ""
+ aMapLocation.getProvince()
+ aMapLocation.getDistrict() + ""
+ aMapLocation.getStreet() + ""
+ aMapLocation.getStreetNum());
Toast.makeText(getApplicationContext(), buffer.toString(), Toast.LENGTH_LONG).show();
isFirstLoc = false;

else
//显示错误信息ErrCode是错误码,errInfo是错误信息,详见错误码表。
Log.e("AmapError", "location Error, ErrCode:"
+ aMapLocation.getErrorCode() + ", errInfo:"
+ aMapLocation.getErrorInfo());
Toast.makeText(getApplicationContext(), "定位失败", Toast.LENGTH_LONG).show();


123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
4.关于停止定位

@Override
protected void onDestroy()
super.onDestroy();
mapView.onDestroy();
//mLocationClient.stopLocation();//停止定位
mLocationClient.onDestroy();//销毁定位客户端。
//销毁定位客户端之后,若要重新开启定位请重新New一个AMapLocationClient对象。


//激活定位
@Override
public void activate(OnLocationChangedListener onLocationChangedListener)
mListener = onLocationChangedListener;


@Override
public void deactivate()
mListener = null;
12345678910111213141516171819
参考技术A 百度高德地图API 进入Android 定位SDK查看相关文档

以上是关于微信公众平台怎么样接入百度地图实现从发送者位置导航到我的位置的功能的主要内容,如果未能解决你的问题,请参考以下文章

如何在微信公众号实现地图导航的功能

微信公众平台开发利用百度接口,制作一键导航功能

微信JS-SDK之地理位置的获取与在线导航,集成百度地图实现在线地图搜索

怎么用百度地图API获得当前位置

利用百度地图Android sdk高仿微信发送位置功能

android开发如何用高德地图进行模拟定位.