WeChat パブリック プラットフォームの開発: 地図関連のインターフェイスの説明

高洛峰
リリース: 2017-02-27 13:31:49
オリジナル
2138 人が閲覧しました

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 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&&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 markersList, string size = "640x640")

生成されるアドレスは次のとおりです以下:

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 サイトに注目してください。


ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!