常用计算:
用于计算2个坐标点之间的直线距离:senparc.weixin.mp.helpers.distance(double n1, double e1, double n2, double e2)
根据距离获取维度差:senparc.weixin.mp.helpers.getlatitudedifference(double km)
根据距离获取经度差:senparc.weixin.mp.helpers.getlongitudedifference(double km)
百度api类:senparc.weixin.mp.helpers.baidumaphelper
生成百度静态地图url:baidumaphelper.getbaidustaticmap(double lng, double lat, int scale, int zoom, ilistbab5edadb31715948a1c50699c09f558 markerslist, int width = 400, int height = 300)
最后生成的地址如下:
http://maps.googleapis.com/maps/api/staticmap?center=&zoom=13&size=640x640&maptype=roadmap&format=jpg&sensor=false&language=zh&&markers=color:red%7clabel:o%7c31.285774,120.59761&markers=color:blue%7clabel:t%7c31.289774,120.59791
生成的url可以直接放到a1f02c36ba31691bcfe87b2722de723b中,或者直接赋值在responsemessagenews的article.picurl。
对应的googlemap api,sdk中做了一致的操作体验。
googlemap api类:senparc.weixin.mp.helpers.googlemaphelper
生成百度静态地图url:googlemaphelper.getgooglestaticmap(int scale, ilistdc4e1a1392a6c2b24aeb81b3381d4710 markerslist, string size = 640x640)
生成的地址如下:
http://maps.googleapis.com/maps/api/staticmap?center=&zoom=&size=640x640&maptype=roadmap&format=jpg&sensor=false&language=zh&&markers=color:red%7clabel:o%7c31.285774,120.59761&markers=color:blue%7clabel:t%7c31.289774,120.59791
结合sdk,我们可以在用户发送位置消息过来的时候,使用地图接口做一些功能,例如我们在messagehandler的onlocationrequest实践中对消息进行处理:
/// <summary> /// 处理位置请求 /// </summary> /// <param name="requestmessage"></param> /// <returns></returns> public override iresponsemessagebase onlocationrequest(requestmessagelocation requestmessage) { var responsemessage = responsemessagebase.createfromrequestmessage<responsemessagenews>(requestmessage); var markerslist = new list<googlemapmarkers>(); markerslist.add(new googlemapmarkers() { x = requestmessage.location_x, y = requestmessage.location_y, color = "red", label = "s", size = googlemapmarkersize.default, }); var mapsize = "480x600"; var mapurl = googlemaphelper.getgooglestaticmap(19 /*requestmessage.scale*//*微信和googlemap的scale不一致,这里建议使用固定值*/, markerslist, mapsize); responsemessage.articles.add(new article() { description = string.format("您刚才发送了地理位置信息。location_x:{0},location_y:{1},scale:{2},标签:{3}", requestmessage.location_x, requestmessage.location_y, requestmessage.scale, requestmessage.label), picurl = mapurl, title = "定位地点周边地图", url = mapurl }); responsemessage.articles.add(new article() { title = "微信公众平台sdk 官网链接", description = "senparc.weixin.mk sdk地址", picurl = "http://weixin.senparc.com/images/logo.jpg", url = "http://weixin.senparc.com" });
return responsemessage;<br> }
实际的开发过程中,除了输出位置的信息,我们还可以根据用户的当前位置,检索就近的点,在articles中输出,并计算出距离。
更多微信公众平台开发:地图相关接口说明。
