LBS アプリケーションの開発を容易にするために、SDK には、Baidu と Google の一般的に使用される計算式と地図インターフェイスがカプセル化されています。
一般的に使用される計算:
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)
Baidu API クラス: Senparc.Weixin。 MP.Helpers.BaiduMapHelper
Baidu 静的地図の URL を生成します: BaiduMapHelper.GetBaiduStaticMap(double lng, double lat, intscale, intzoom, IList
最終的に生成されるアドレスは次のとおりです:
http://maps.googleapis.com/maps/api/staticmap?center=&zoom=13&size=640x640&maptype=roadmap&format=jpg&sensor=false& language=zh&&makers=color:red%7Clabel:O%7C31.285774 ,120.59761&markers=color:blue% 7Clabel:T%7C31.289774,120.59791
生成された URL は に直接配置することも、ResponseMessageNews の Article.PicUrl に直接割り当てることもできます。
対応する GoogleMap API と SDK は一貫した操作エクスペリエンスを備えています。
GoogleMap API クラス: Senparc.Weixin.MP.Helpers.GoogleMapHelper
Baidu 静的マップ URL を生成: GoogleMapHelper.GetGoogleStaticMap(intscale, IList
生成されるアドレスは次のとおりです以下:
http://maps.googleapis.com/maps/api/staticmap?center=&zoom=&size=640x640&maptype=roadmap&format=jpg&sensor=false& language=zh&&makers=color:red%7Clabel:O%7C31.285774,120.59761&markers =color :blue%7Clabel:T%7C31.289774,120.59791
SDk と組み合わせると、ユーザーが位置メッセージを送信するときにマップ インターフェイスを使用していくつかの機能を実行できます。たとえば、メッセージを使用します。 MessageHandler Processing の 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> }
実際の開発プロセスでは、位置情報を出力するだけでなく、ユーザーの現在位置に基づいて最寄りのポイントを取得し、記事に出力し、距離を計算することもできます。
WeChat パブリック プラットフォーム開発の詳細については、地図関連のインターフェイスの説明と関連記事を参照してください。PHP 中国語 Web サイトに注目してください。