$mglng, 'lat' => $mglat]; } } /** * GCJ02 转换为 WGS84 (高德转北斗) * @param int|string $lng 经度 * @param int|string $lat 纬度 * @return array */ static public function aMapToBeiDou($lng = 0, $lat = 0) { if (self::outOfChina($lng, $lat)) { return array($lng, $lat); } else { $dlat = self::transFormLat($lng - 105.0, $lat - 35.0); $dlng = self::transFormLng($lng - 105.0, $lat - 35.0); $radlat = $lat / 180.0 * self::PI; $magic = sin($radlat); $magic = 1 - self::ee * $magic * $magic; $sqrtmagic = sqrt($magic); $dlat = ($dlat * 180.0) / ((self::a * (1 - self::ee)) / ($magic * $sqrtmagic) * self::PI); $dlng = ($dlng * 180.0) / (self::a / $sqrtmagic * cos($radlat) * self::PI); $mglat = $lat + $dlat; $mglng = $lng + $dlng; return array($lng * 2 - $mglng, $lat * 2 - $mglat); } } /** * 百度坐标系 (BD-09) 与 火星坐标系 (GCJ-02)的转换 百度转高德 * 即 百度 转 谷歌、高德 * @param string $bd_lon 百度经度 * @param string $bd_lat 百度纬度 * @return array */ static public function baiDuToAMap($bd_lon = '', $bd_lat = '') { $x = $bd_lon - 0.0065; $y = $bd_lat - 0.006; $z = sqrt($x * $x + $y * $y) - 0.00002 * sin($y * self::x_PI); $theta = atan2($y, $x) - 0.000003 * cos($x * self::x_PI); $gg_lng = $z * cos($theta); $gg_lat = $z * sin($theta); return array($gg_lng, $gg_lat); } /** * GCJ-02 转换为 BD-09 (火星坐标系转百度 即谷歌、高德转百度) * @param string $lng 经度 * @param string $lat 纬度 * @return array */ static public function aMapToBaiDu($lng = '', $lat = '') { $z = sqrt($lng * $lng + $lat * $lat) + 0.00002 * sin($lat * self::x_PI); $theta = atan2($lat, $lng) + 0.000003 * cos($lng * self::x_PI); $bd_lng = $z * cos($theta) + 0.0065; $bd_lat = $z * sin($theta) + 0.006; return array($bd_lng, $bd_lat); } static private function transFormLat($lng = '', $lat = '') { $ret = -100.0 + 2.0 * $lng + 3.0 * $lat + 0.2 * $lat * $lat + 0.1 * $lng * $lat + 0.2 * sqrt(abs($lng)); $ret += (20.0 * sin(6.0 * $lng * self::PI) + 20.0 * sin(2.0 * $lng * self::PI)) * 2.0 / 3.0; $ret += (20.0 * sin($lat * self::PI) + 40.0 * sin($lat / 3.0 * self::PI)) * 2.0 / 3.0; $ret += (160.0 * sin($lat / 12.0 * self::PI) + 320 * sin($lat * self::PI / 30.0)) * 2.0 / 3.0; return $ret; } static private function transFormLng($lng = 0, $lat = 0) { $ret = 300.0 + $lng + 2.0 * $lat + 0.1 * $lng * $lng + 0.1 * $lng * $lat + 0.1 * sqrt(abs($lng)); $ret += (20.0 * sin(6.0 * $lng * self::PI) + 20.0 * sin(2.0 * $lng * self::PI)) * 2.0 / 3.0; $ret += (20.0 * sin($lng * self::PI) + 40.0 * sin($lng / 3.0 * self::PI)) * 2.0 / 3.0; $ret += (150.0 * sin($lng / 12.0 * self::PI) + 300.0 * sin($lng / 30.0 * self::PI)) * 2.0 / 3.0; return $ret; } /** * 判断是否在国内,不在国内不做偏移 * @param int $lng 经度 * @param int $lat 纬度 * @return bool */ static private function outOfChina($lng = 0, $lat = 0) { return ($lng < 72.004 || $lng > 137.8347) || (($lat < 0.8293 || $lat > 55.8271) || false); } //经开区大围栏坐标集 public function test_paper(){ $aa = '106.52676,29.57023 106.52606,29.57028 106.52548,29.57131 106.52548,29.57131 106.52548,29.57131 106.52421,29.57251 106.52286,29.57452 106.52164,29.5775 106.52099,29.58034 106.52127,29.58215 106.52205,29.58251 106.52205,29.58251 106.52403,29.5832 106.52403,29.5832 106.52546,29.5833 106.52546,29.5833 106.52559,29.58321 106.52609,29.58323 106.52756,29.58363 106.52659,29.58509 106.52554,29.58783 106.52397,29.59192 106.52206,29.59574 106.52006,29.59896 106.51972,29.60049 106.51999,29.60424 106.52038,29.60888 106.52203,29.61209 106.52334,29.61316 106.52492,29.61395 106.52696,29.61446 106.52775,29.61457 106.53072,29.61506 106.53501,29.6161 106.53884,29.61771 106.54337,29.61956 106.54866,29.61997 106.5528,29.6203 106.55514,29.62052 106.5571,29.6207 106.56091,29.62096 106.56562,29.62262 106.57048,29.62551 106.57582,29.62711 106.57743,29.62738 106.58141,29.62806 106.58635,29.62966 106.59124,29.63212 106.59606,29.63363 106.60114,29.63133 106.60681,29.62819 106.60839,29.62752 106.61297,29.62704 106.61878,29.62711 106.62408,29.62872 106.62627,29.63295 106.62695,29.63377 106.62695,29.63377 106.62695,29.63377 106.62745,29.63428 106.62782,29.63466 106.62822,29.6351 106.62853,29.63546 106.62853,29.63546 106.62913,29.63619 106.62913,29.63619 106.6296,29.63677 106.63046,29.63795 106.63146,29.63954 106.63248,29.64132 106.63401,29.64362 106.63648,29.64597 106.63775,29.64692 106.64152,29.64993 106.64425,29.65544 106.64762,29.66724 106.65013,29.67191 106.65277,29.6765 106.65361,29.67808 106.65527,29.68193 106.65694,29.68703 106.65983,29.69264 106.6635,29.69837 106.66741,29.70405 106.67275,29.70922 106.67341,29.71102 106.67491,29.71477 106.67861,29.72022 106.67882,29.72638 106.681,29.73153 106.68446,29.73525 106.68747,29.7385 106.68833,29.73929 106.68688,29.74203 106.68827,29.74529 106.68898,29.74651 106.68951,29.74915 106.68949,29.75301 106.68949,29.75301 106.68949,29.75301 106.68924,29.75364 106.68594,29.75453 106.68188,29.75563 106.67755,29.75664 106.67473,29.75684 106.67025,29.75662 106.66882,29.75644 106.66604,29.75604 106.66121,29.75548 106.65809,29.75647 106.65783,29.75776 106.65957,29.76149 106.66125,29.76609 106.66156,29.76693 106.66219,29.76924 106.66286,29.77205 106.66286,29.77205 106.66322,29.77354 106.66322,29.77354 106.66369,29.77477 106.66419,29.77548 106.66543,29.77741 106.66672,29.78089 106.66672,29.78202 106.66664,29.78445 106.66651,29.78759 106.66636,29.79188 106.66634,29.79337 106.66631,29.79545 106.66631,29.79545 106.66644,29.79684 106.66912,29.80023 106.67281,29.80387 106.67715,29.80681 106.67863,29.80793 106.68058,29.80952 106.68209,29.81075 106.68623,29.81335 106.69186,29.8159 106.69598,29.81912 106.69759,29.82248 106.69791,29.82391 106.6985,29.8267 106.69943,29.83097 106.70019,29.83349 106.70019,29.83349 106.70019,29.83349 106.70019,29.83349 106.70019,29.83349 106.70019,29.83349 106.70019,29.83349 106.70019,29.83349 106.70019,29.83349 106.70019,29.83349 106.70029,29.83348 106.70019,29.83385 106.70066,29.83488 106.70066,29.83488 106.70008,29.83391 106.69888,29.82918 106.69752,29.82288 106.69571,29.81896 106.69476,29.81796 106.69208,29.81614 106.68637,29.81361 106.68137,29.81041 106.67814,29.80773 106.6734,29.80447 106.66964,29.80101 106.66902,29.80029 106.66795,29.79903 106.66709,29.7981 106.66709,29.7981 106.66662,29.79748 106.66621,29.79501 106.66634,29.79067 106.66639,29.78904 106.66647,29.78585 106.66647,29.78585 106.6665,29.7851 106.66659,29.78214 106.66657,29.78069 106.66489,29.77696 106.66401,29.77572 106.66303,29.77337 106.66289,29.77275 106.66229,29.77023 106.66095,29.76563 106.65927,29.76112 106.65766,29.75759 106.65766,29.75759 106.65766,29.75759 106.65766,29.75759 106.65835,29.75616 106.66198,29.75546 106.66689,29.75605 106.66798,29.75621 106.66925,29.75639 106.67259,29.75669 106.6783,29.75641 106.68368,29.75503 106.68792,29.75389 106.68937,29.75145 106.68911,29.74736 106.68911,29.74736 106.68911,29.74736 106.68758,29.74443 106.68679,29.74037 106.68412,29.73517 106.67967,29.72991 106.67887,29.72301 106.67857,29.72044 106.6761,29.7164 106.67269,29.70946 106.66721,29.70407 106.66305,29.69786 106.65858,29.69123 106.65598,29.68459 106.65524,29.68227 106.65347,29.67804 106.65022,29.67232 106.64728,29.66661 106.64363,29.65409 106.6408,29.64938 106.6393,29.64822 106.63673,29.64631 106.63372,29.64342 106.63169,29.6401 106.62973,29.63704 106.62737,29.63446 106.62501,29.63157 106.62415,29.63016 106.6222,29.62881 106.61641,29.62698 106.60882,29.62756 106.60242,29.63075 106.59655,29.63366 106.59096,29.63214 106.58896,29.63113 106.58523,29.62926 106.57933,29.62789 106.57388,29.62696 106.56895,29.62476 106.56342,29.62162 106.55658,29.62079 106.55451,29.62096 106.55141,29.62125 106.54564,29.62016 106.54115,29.61935 106.53936,29.61843 106.53643,29.61705 106.53248,29.61652 106.5318,29.61652 106.53118,29.61653 106.53019,29.61653 106.52885,29.61647 106.52657,29.61579 106.52263,29.61425 106.51728,29.61298 106.51505,29.61268 106.51105,29.6124 106.50433,29.61194 106.49917,29.61026 106.49505,29.60886 106.49412,29.60954 106.49429,29.60725 106.49405,29.60583 106.49353,29.60334 106.49339,29.59939 106.49326,29.59554 106.49322,29.59348 106.49317,29.59131 106.49311,29.58871 106.49305,29.58745 106.49297,29.58564 106.49298,29.58265 106.49405,29.5782 106.49758,29.57497 106.50267,29.57304 106.51723,29.56899 106.51913,29.5658 106.52171,29.56568 106.52342,29.56764 106.5245,29.56892 106.52453,29.569 106.52469,29.56945 106.52487,29.56958 106.52571,29.56997'; $arr = '106.52676 29.57023 106.52606 29.57028 106.52548 29.57131 106.52548 29.57131 106.52548 29.57131 106.52421 29.57251 106.52286 29.57452 106.52164 29.5775 106.52099 29.58034 106.52127 29.58215 106.52205 29.58251 106.52205 29.58251 106.52403 29.5832 106.52403 29.5832 106.52546 29.5833 106.52546 29.5833 106.52559 29.58321 106.52609 29.58323 106.52756 29.58363 106.52659 29.58509 106.52554 29.58783 106.52397 29.59192 106.52206 29.59574 106.52006 29.59896 106.51972 29.60049 106.51999 29.60424 106.52038 29.60888 106.52203 29.61209 106.52334 29.61316 106.52492 29.61395 106.52696 29.61446 106.52775 29.61457 106.53072 29.61506 106.53501 29.6161 106.53884 29.61771 106.54337 29.61956 106.54866 29.61997 106.5528 29.6203 106.55514 29.62052 106.5571 29.6207 106.56091 29.62096 106.56562 29.62262 106.57048 29.62551 106.57582 29.62711 106.57743 29.62738 106.58141 29.62806 106.58635 29.62966 106.59124 29.63212 106.59606 29.63363 106.60114 29.63133 106.60681 29.62819 106.60839 29.62752 106.61297 29.62704 106.61878 29.62711 106.62408 29.62872 106.62627 29.63295 106.62695 29.63377 106.62695 29.63377 106.62695 29.63377 106.62745 29.63428 106.62782 29.63466 106.62822 29.6351 106.62853 29.63546 106.62853 29.63546 106.62913 29.63619 106.62913 29.63619 106.6296 29.63677 106.63046 29.63795 106.63146 29.63954 106.63248 29.64132 106.63401 29.64362 106.63648 29.64597 106.63775 29.64692 106.64152 29.64993 106.64425 29.65544 106.64762 29.66724 106.65013 29.67191 106.65277 29.6765 106.65361 29.67808 106.65527 29.68193 106.65694 29.68703 106.65983 29.69264 106.6635 29.69837 106.66741 29.70405 106.67275 29.70922 106.67341 29.71102 106.67491 29.71477 106.67861 29.72022 106.67882 29.72638 106.681 29.73153 106.68446 29.73525 106.68747 29.7385 106.68833 29.73929 106.68688 29.74203 106.68827 29.74529 106.68898 29.74651 106.68951 29.74915 106.68949 29.75301 106.68949 29.75301 106.68949 29.75301 106.68924 29.75364 106.68594 29.75453 106.68188 29.75563 106.67755 29.75664 106.67473 29.75684 106.67025 29.75662 106.66882 29.75644 106.66604 29.75604 106.66121 29.75548 106.65809 29.75647 106.65783 29.75776 106.65957 29.76149 106.66125 29.76609 106.66156 29.76693 106.66219 29.76924 106.66286 29.77205 106.66286 29.77205 106.66322 29.77354 106.66322 29.77354 106.66369 29.77477 106.66419 29.77548 106.66543 29.77741 106.66672 29.78089 106.66672 29.78202 106.66664 29.78445 106.66651 29.78759 106.66636 29.79188 106.66634 29.79337 106.66631 29.79545 106.66631 29.79545 106.66644 29.79684 106.66912 29.80023 106.67281 29.80387 106.67715 29.80681 106.67863 29.80793 106.68058 29.80952 106.68209 29.81075 106.68623 29.81335 106.69186 29.8159 106.69598 29.81912 106.69759 29.82248 106.69791 29.82391 106.6985 29.8267 106.69943 29.83097 106.70019 29.83349 106.70019 29.83349 106.70019 29.83349 106.70019 29.83349 106.70019 29.83349 106.70019 29.83349 106.70019 29.83349 106.70019 29.83349 106.70019 29.83349 106.70019 29.83349 106.70029 29.83348 106.70019 29.83385 106.70066 29.83488 106.70066 29.83488 106.70008 29.83391 106.69888 29.82918 106.69752 29.82288 106.69571 29.81896 106.69476 29.81796 106.69208 29.81614 106.68637 29.81361 106.68137 29.81041 106.67814 29.80773 106.6734 29.80447 106.66964 29.80101 106.66902 29.80029 106.66795 29.79903 106.66709 29.7981 106.66709 29.7981 106.66662 29.79748 106.66621 29.79501 106.66634 29.79067 106.66639 29.78904 106.66647 29.78585 106.66647 29.78585 106.6665 29.7851 106.66659 29.78214 106.66657 29.78069 106.66489 29.77696 106.66401 29.77572 106.66303 29.77337 106.66289 29.77275 106.66229 29.77023 106.66095 29.76563 106.65927 29.76112 106.65766 29.75759 106.65766 29.75759 106.65766 29.75759 106.65766 29.75759 106.65835 29.75616 106.66198 29.75546 106.66689 29.75605 106.66798 29.75621 106.66925 29.75639 106.67259 29.75669 106.6783 29.75641 106.68368 29.75503 106.68792 29.75389 106.68937 29.75145 106.68911 29.74736 106.68911 29.74736 106.68911 29.74736 106.68758 29.74443 106.68679 29.74037 106.68412 29.73517 106.67967 29.72991 106.67887 29.72301 106.67857 29.72044 106.6761 29.7164 106.67269 29.70946 106.66721 29.70407 106.66305 29.69786 106.65858 29.69123 106.65598 29.68459 106.65524 29.68227 106.65347 29.67804 106.65022 29.67232 106.64728 29.66661 106.64363 29.65409 106.6408 29.64938 106.6393 29.64822 106.63673 29.64631 106.63372 29.64342 106.63169 29.6401 106.62973 29.63704 106.62737 29.63446 106.62501 29.63157 106.62415 29.63016 106.6222 29.62881 106.61641 29.62698 106.60882 29.62756 106.60242 29.63075 106.59655 29.63366 106.59096 29.63214 106.58896 29.63113 106.58523 29.62926 106.57933 29.62789 106.57388 29.62696 106.56895 29.62476 106.56342 29.62162 106.55658 29.62079 106.55451 29.62096 106.55141 29.62125 106.54564 29.62016 106.54115 29.61935 106.53936 29.61843 106.53643 29.61705 106.53248 29.61652 106.5318 29.61652 106.53118 29.61653 106.53019 29.61653 106.52885 29.61647 106.52657 29.61579 106.52263 29.61425 106.51728 29.61298 106.51505 29.61268 106.51105 29.6124 106.50433 29.61194 106.49917 29.61026 106.49505 29.60886 106.49412 29.60954 106.49429 29.60725 106.49405 29.60583 106.49353 29.60334 106.49339 29.59939 106.49326 29.59554 106.49322 29.59348 106.49317 29.59131 106.49311 29.58871 106.49305 29.58745 106.49297 29.58564 106.49298 29.58265 106.49405 29.5782 106.49758 29.57497 106.50267 29.57304 106.51723 29.56899 106.51913 29.5658 106.52171 29.56568 106.52342 29.56764 106.5245 29.56892 106.52453 29.569 106.52469 29.56945 106.52487 29.56958 106.52571 29.56997 '; $str = '(106.988613,29.835648) (106.987795,29.836) (106.987715,29.835985) (106.986893,29.836263) (106.983398,29.837426) (106.982967,29.837065) (106.978817,29.838702) (106.977721,29.836635) (106.982347,29.834559) (106.984274,29.833572) (106.984292,29.833521) (106.985141,29.833114) (106.986084,29.83264) (106.986151,29.832652) (106.988613,29.835652) '; // $arr = str_replace('',',',$arr); $tokens = preg_split('/[\r\n]+/', $aa); // $this->pre($aa); // $this->pre($tokens); // $abcc = implode(';',$tokens); // $this->pre($tokens); // $this->pre($abcc); // die; // $gd = '106.52676,29.57023;106.52606,29.57028;106.52548,29.57131;106.52548,29.57131;106.52548,29.57131;106.52421,29.57251;106.52286,29.57452;106.52164,29.5775;106.52099,29.58034;106.52127,29.58215;106.52205,29.58251;106.52205,29.58251;106.52403,29.5832;106.52403,29.5832;106.52546,29.5833;106.52546,29.5833;106.52559,29.58321;106.52609,29.58323;106.52756,29.58363;106.52659,29.58509;106.52554,29.58783;106.52397,29.59192;106.52206,29.59574;106.52006,29.59896;106.51972,29.60049;106.51999,29.60424;106.52038,29.60888;106.52203,29.61209;106.52334,29.61316;106.52492,29.61395;106.52696,29.61446;106.52775,29.61457;106.53072,29.61506;106.53501,29.6161;106.53884,29.61771;106.54337,29.61956;106.54866,29.61997;106.5528,29.6203;106.55514,29.62052;106.5571,29.6207;106.56091,29.62096;106.56562,29.62262;106.57048,29.62551;106.57582,29.62711;106.57743,29.62738;106.58141,29.62806;106.58635,29.62966;106.59124,29.63212;106.59606,29.63363;106.60114,29.63133;106.60681,29.62819;106.60839,29.62752;106.61297,29.62704;106.61878,29.62711;106.62408,29.62872;106.62627,29.63295;106.62695,29.63377;106.62695,29.63377;106.62695,29.63377;106.62745,29.63428;106.62782,29.63466;106.62822,29.6351;106.62853,29.63546;106.62853,29.63546;106.62913,29.63619;106.62913,29.63619;106.6296,29.63677;106.63046,29.63795;106.63146,29.63954;106.63248,29.64132;106.63401,29.64362;106.63648,29.64597;106.63775,29.64692;106.64152,29.64993;106.64425,29.65544;106.64762,29.66724;106.65013,29.67191;106.65277,29.6765;106.65361,29.67808;106.65527,29.68193;106.65694,29.68703;106.65983,29.69264;106.6635,29.69837;106.66741,29.70405;106.67275,29.70922;106.67341,29.71102;106.67491,29.71477;106.67861,29.72022;106.67882,29.72638;106.681,29.73153;106.68446,29.73525;106.68747,29.7385;106.68833,29.73929;106.68688,29.74203;106.68827,29.74529;106.68898,29.74651;106.68951,29.74915;106.68949,29.75301;106.68949,29.75301;106.68949,29.75301;106.68924,29.75364;106.68594,29.75453;106.68188,29.75563;106.67755,29.75664;106.67473,29.75684;106.67025,29.75662;106.66882,29.75644;106.66604,29.75604;106.66121,29.75548;106.65809,29.75647;106.65783,29.75776;106.65957,29.76149;106.66125,29.76609;106.66156,29.76693;106.66219,29.76924;106.66286,29.77205;106.66286,29.77205;106.66322,29.77354;106.66322,29.77354;106.66369,29.77477;106.66419,29.77548;106.66543,29.77741;106.66672,29.78089;106.66672,29.78202;106.66664,29.78445;106.66651,29.78759;106.66636,29.79188;106.66634,29.79337;106.66631,29.79545;106.66631,29.79545;106.66644,29.79684;106.66912,29.80023;106.67281,29.80387;106.67715,29.80681;106.67863,29.80793;106.68058,29.80952;106.68209,29.81075;106.68623,29.81335;106.69186,29.8159;106.69598,29.81912;106.69759,29.82248;106.69791,29.82391;106.6985,29.8267;106.69943,29.83097;106.70019,29.83349;106.70019,29.83349;106.70019,29.83349;106.70019,29.83349;106.70019,29.83349;106.70019,29.83349;106.70019,29.83349;106.70019,29.83349;106.70019,29.83349;106.70019,29.83349;106.70029,29.83348;106.70019,29.83385;106.70066,29.83488;106.70066,29.83488;106.70008,29.83391;106.69888,29.82918;106.69752,29.82288;106.69571,29.81896;106.69476,29.81796;106.69208,29.81614;106.68637,29.81361;106.68137,29.81041;106.67814,29.80773;106.6734,29.80447;106.66964,29.80101;106.66902,29.80029;106.66795,29.79903;106.66709,29.7981;106.66709,29.7981;106.66662,29.79748;106.66621,29.79501;106.66634,29.79067;106.66639,29.78904;106.66647,29.78585;106.66647,29.78585;106.6665,29.7851;106.66659,29.78214;106.66657,29.78069;106.66489,29.77696;106.66401,29.77572;106.66303,29.77337;106.66289,29.77275;106.66229,29.77023;106.66095,29.76563;106.65927,29.76112;106.65766,29.75759;106.65766,29.75759;106.65766,29.75759;106.65766,29.75759;106.65835,29.75616;106.66198,29.75546;106.66689,29.75605;106.66798,29.75621;106.66925,29.75639;106.67259,29.75669;106.6783,29.75641;106.68368,29.75503;106.68792,29.75389;106.68937,29.75145;106.68911,29.74736;106.68911,29.74736;106.68911,29.74736;106.68758,29.74443;106.68679,29.74037;106.68412,29.73517;106.67967,29.72991;106.67887,29.72301;106.67857,29.72044;106.6761,29.7164;106.67269,29.70946;106.66721,29.70407;106.66305,29.69786;106.65858,29.69123;106.65598,29.68459;106.65524,29.68227;106.65347,29.67804;106.65022,29.67232;106.64728,29.66661;106.64363,29.65409;106.6408,29.64938;106.6393,29.64822;106.63673,29.64631;106.63372,29.64342;106.63169,29.6401;106.62973,29.63704;106.62737,29.63446;106.62501,29.63157;106.62415,29.63016;106.6222,29.62881;106.61641,29.62698;106.60882,29.62756;106.60242,29.63075;106.59655,29.63366;106.59096,29.63214;106.58896,29.63113;106.58523,29.62926;106.57933,29.62789;106.57388,29.62696;106.56895,29.62476;106.56342,29.62162;106.55658,29.62079;106.55451,29.62096;106.55141,29.62125;106.54564,29.62016;106.54115,29.61935;106.53936,29.61843;106.53643,29.61705;106.53248,29.61652;106.5318,29.61652;106.53118,29.61653;106.53019,29.61653;106.52885,29.61647;106.52657,29.61579;106.52263,29.61425;106.51728,29.61298;106.51505,29.61268;106.51105,29.6124;106.50433,29.61194;106.49917,29.61026;106.49505,29.60886;106.49412,29.60954;106.49429,29.60725;106.49405,29.60583;106.49353,29.60334;106.49339,29.59939;106.49326,29.59554;106.49322,29.59348;106.49317,29.59131;106.49311,29.58871;106.49305,29.58745;106.49297,29.58564;106.49298,29.58265;106.49405,29.5782;106.49758,29.57497;106.50267,29.57304;106.51723,29.56899;106.51913,29.5658;106.52171,29.56568;106.52342,29.56764;106.5245,29.56892;106.52453,29.569;106.52469,29.56945;106.52487,29.56958;106.52571,29.56997'; // $str = str_replace(')','',$str); // $result = array(); // 转换后的结果 // $tokens = preg_split('/[\r\n]+/', $str); //WGS84(北斗)转高德坐标 // $aaa = '106.54829705924,29.609340554305;106.54832757762,29.609408038681;106.5483874398,29.609531526631;106.54842641336,29.609612251095;106.54844227423,29.60964273476;106.54845842086,29.609667710334;106.54845954903,29.609672728464;106.54845959159,29.609672726093;106.54847734,29.609695089055;106.54850062848,29.609719765108;106.5485331403,29.609747857574;106.54856605013,29.609770709559;106.54860786672,29.609793542232;106.54865764244,29.609813468288;106.54869586453,29.609824237206;106.54871263729,29.609827570447;106.54870881483,29.609673826;106.54870890688,29.609673814144;106.54869876965,29.609667984561;106.54867331414,29.609654065908;106.5486583382,29.609640079984;106.5486284823,29.609614089667;106.54860317159,29.609581132906;106.54858833423,29.609550244428;106.54854118117,29.60945759406;106.54848174377,29.60933497514;106.54843554015,29.609239657414;106.54838763242,29.609136353115;106.54835283042,29.609079503919;106.54829696956,29.609016088547;106.54821073103,29.608940008512;106.54809476099,29.608894074099;106.54795047292,29.608868240416;106.54685441522,29.60889766152;106.54679324602,29.608900125074;106.54649688992,29.608863341976;106.54649643264,29.608862925716;106.54597224328,29.608863921304;106.54597345757,29.609024212799;106.54635389862,29.609014116045;106.5463540532,29.60901377991;106.54646768145,29.609010610163;106.54646809282,29.609010951935;106.54680677515,29.609292333017;106.54680763265,29.609291146494;106.54697548059,29.609133269741;106.54795601929,29.609107125295;106.54795641936,29.609107114628;106.54795642023,29.609107136912;106.54816023132,29.609103272576;106.54817596767,29.609117938267;106.54819149927,29.609134715682;106.54821487109,29.609166098109;106.54823123537,29.609195205702;106.54824890236,29.609231650548;106.54829705924,29.609340554305'; // $tokens = explode(';',$aaa); $path = ''; foreach ($tokens as $k => $v){ $v_arr = explode(',',$v); // $this->pre($v_arr);die; // $abc = $this->beiDouToAMap($v_arr[0],$v_arr[1]); $abc = $this->aMapToBaiDu($v_arr[0],$v_arr[1]); // $this->pre($abc);die; $url = number_format($abc[0],6).','.number_format($abc[1],6); // $url = $abc['lng'].','.$abc['lat']; // $url = $abc[0].','.$abc[1]; $path .= $url.';'; } $this->pre($path); die; // $this->pre($tokens); foreach ($tokens as $token) { if (false !== strpos($token, '=')) { list($key, $value) = explode('=', $token, 2); $result[$key] = $value; } else $result[] = $token; } $path = ''; foreach ($result as $k => $v){ if ($v){ $Varr = explode(',',$v); $res = $this->bd_decrypt($Varr[0],$Varr[1]); $url = number_format($res['gg_lon'],6).','.number_format($res['gg_lat'],6); $path .= $url.';'; // $this->pre($res);die; // $path += $url.';'; } } $this->pre($path);die; $path_arr = explode(';',$path); $path_bd = '';//北斗坐标集(由高德转北斗坐标集) foreach ($path_arr as $k => $v){ // $this->pre($v); // $aa['content'] = $v; // $this->pre($aa); // Db::name('abc')->insert($aa);//百度转高德坐标集 $Varr = explode(',',$v); if (count($Varr) == 2){ $res = $this->aMapToBeiDou($Varr[0],$Varr[1]); $url = number_format($res[0],6).','.number_format($res[1],6); $url = '{"lon":'.number_format($res[0],6).',"lat":'.number_format($res[1],6).'},'; $path_bd .= $url.';'; } } // $this->pre($path_bd);die; $path_bd_arr = explode(';',$path_bd); foreach ($path_bd_arr as $k => $v){ $aa['content'] = $v; Db::name('abc')->insert($aa);//高德转北斗坐标集 } } //BD-09(百度) 坐标转换成 GCJ-02(火星,高德) 坐标 //@param bd_lon 百度经度 //@param bd_lat 百度纬度 public function bd_decrypt($bd_lon,$bd_lat) { $x_pi = 3.14159265358979324 * 3000.0 / 180.0; $x = $bd_lon - 0.0065; $y = $bd_lat - 0.006; $z = sqrt($x * $x + $y * $y) - 0.00002 * sin($y * $x_pi); $theta = atan2($y, $x) - 0.000003 * cos($x * $x_pi); $data['gg_lon'] = $z * cos($theta); $data['gg_lat'] = $z * sin($theta); return $data; } //GCJ-02(火星,高德)坐标转换成BD-09(百度)坐标 //@param bd_lon 百度经度 //@param bd_lat 百度纬度 function bd_encrypt($gg_lon,$gg_lat){ $x_pi = 3.14159265358979324 * 3000.0 / 180.0; $x = $gg_lon; $y = $gg_lat; $z = sqrt($x * $x + $y * $y) - 0.00002 * sin($y * $x_pi); $theta = atan2($y, $x) - 0.000003 * cos($x * $x_pi); $bd_lon = $z * cos($theta) + 0.0065; $bd_lat = $z * sin($theta) + 0.006; // 保留小数点后六位 $data['bd_lon'] = round($bd_lon, 6); $data['bd_lat'] = round($bd_lat, 6); return $data; } }