QqMapController.php 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. <?php
  2. namespace backend\modules\common\controllers;
  3. use common\helpers\map\QqMapHelper;
  4. use yii\web\Controller;
  5. use Yii;
  6. /**
  7. * 腾讯地图WebServiceAPI服务
  8. * Class QqMapController
  9. * @Author: lun
  10. * @DateTime: 2023/7/20 0020 11:14
  11. * @Copyright: copyright (c) 2021 广东七件事集团
  12. * @package backend\modules\common\controllers
  13. */
  14. class QqMapController extends Controller
  15. {
  16. use \common\traits\BaseControllerTrait;
  17. public $enableCsrfValidation = false;
  18. /**
  19. * 地址解析(由文字地址到经纬度的转换能力,并同时提供结构化的省市区地址信息)
  20. * @Author: lun
  21. * @DateTime: 2023/7/20 0020 11:18
  22. * @Copyright: copyright (c) 2021 广东七件事集团
  23. * @return mixed|void
  24. */
  25. public function actionGeocoder()
  26. {
  27. $request = Yii::$app->request;
  28. if ($request->isAjax && $request->isPost) {
  29. $params = Yii::$app->request->post();
  30. $res = Yii::$app->services->validate->validate($params, [
  31. [['address'], 'required', 'message' => '请输入查询的详细地址'],
  32. [['address'], 'string'],
  33. ]);
  34. if ($res === false) return $this->error(Yii::$app->services->validate->getErrorMessage());
  35. $data = QqMapHelper::Geocoder($params['address']);
  36. if ($data['status'] != 0) return $this->error($data['message']);
  37. return $this->success('获取成功', $data['result']);
  38. }
  39. }
  40. /**
  41. * 根据经纬度解析地址
  42. * @Author: lun
  43. * @DateTime: 2023/7/21 0021 14:33
  44. * @Copyright: copyright (c) 2021 广东七件事集团
  45. * @return mixed|void
  46. *
  47. */
  48. public function actionReverseGeocoder()
  49. {
  50. $request = Yii::$app->request;
  51. if ($request->isAjax && $request->isPost) {
  52. $params = Yii::$app->request->post();
  53. $res = Yii::$app->services->validate->validate($params, [
  54. [['longitude','latitude'], 'required', 'message' => '需要解析的经纬度不能为空'],
  55. [['longitude','latitude'], 'safe'],
  56. ]);
  57. if ($res === false) return $this->error(Yii::$app->services->validate->getErrorMessage());
  58. $data = QqMapHelper::ReverseGeocoder($params['latitude'], $params['longitude']);
  59. if ($data['status'] != 0) return $this->error($data['message']);
  60. return $this->success('获取成功', $data['result']);
  61. }
  62. }
  63. /**
  64. * 根据IP获取地址
  65. * @Author: lun
  66. * @DateTime: 2023/7/20 0020 14:48
  67. * @Copyright: copyright (c) 2021 广东七件事集团
  68. * @return mixed|void
  69. */
  70. public function actionIplocation()
  71. {
  72. $request = Yii::$app->request;
  73. if ($request->isAjax && $request->isPost) {
  74. $data = QqMapHelper::Iplocation($request->userIP);
  75. if ($data['status'] != 0) return $this->error($data['message']);
  76. return $this->success('获取成功', $data['result']);
  77. }
  78. }
  79. }