116.397428, 'lat' => 39.90923, 'name' => '北京天安门'], ['lng' => 121.473701, 'lat' => 31.230416, 'name' => '上海外滩'], ['lng' => 113.280637, 'lat' => 23.125178, 'name' => '广州塔'], ]; // 测试多边形(北京市中心区域) $testPolygon = [ ['lng' => 116.380, 'lat' => 39.900], ['lng' => 116.420, 'lat' => 39.900], ['lng' => 116.420, 'lat' => 39.920], ['lng' => 116.380, 'lat' => 39.920], ]; // 测试围栏数据(新格式) $testFences = [ [ 'fence_name' => '北京配送区域', 'fence_type' => 1, 'is_active' => 1, 'fence_data' => [ [ 'id' => 'polygon_1', 'paths' => [ ['lat' => 39.900, 'lng' => 116.380], ['lat' => 39.900, 'lng' => 116.420], ['lat' => 39.920, 'lng' => 116.420], ['lat' => 39.920, 'lng' => 116.380], ] ] ] ] ]; echo "

电子围栏功能测试

\n"; // 测试1: 基础点在多边形内算法 echo "

测试1: 基础点在多边形内算法

\n"; foreach ($testPoints as $point) { $result = \SmallProgramApi\Helper\FenceHelper::isPointInPolygon( $point['lng'], $point['lat'], $testPolygon ); echo "点 {$point['name']} ({$point['lng']}, {$point['lat']}) "; echo $result ? "在多边形内" : "不在多边形内"; echo "
\n"; } // 测试2: 围栏检查功能 echo "

测试2: 围栏检查功能

\n"; foreach ($testPoints as $point) { $result = \SmallProgramApi\Helper\FenceHelper::checkPointInFences( $point['lng'], $point['lat'], $testFences ); echo "点 {$point['name']} ({$point['lng']}, {$point['lat']}) "; if ($result['in_fence']) { echo "在围栏内 - {$result['fence_name']}"; } else { echo "不在围栏内"; } echo "
\n"; } // 测试3: 边界情况 echo "

测试3: 边界情况测试

\n"; $boundaryPoints = [ ['lng' => 116.380, 'lat' => 39.900, 'name' => '左下角'], ['lng' => 116.420, 'lat' => 39.920, 'name' => '右上角'], ['lng' => 116.400, 'lat' => 39.910, 'name' => '中心点'], ]; foreach ($boundaryPoints as $point) { $result = \SmallProgramApi\Helper\FenceHelper::checkPointInFences( $point['lng'], $point['lat'], $testFences ); echo "边界点 {$point['name']} ({$point['lng']}, {$point['lat']}) "; if ($result['in_fence']) { echo "在围栏内 - {$result['fence_name']}"; } else { echo "不在围栏内"; } echo "
\n"; } echo "

测试完成

\n"; echo "如果看到此消息,说明电子围栏辅助类已成功创建并可以正常工作。
\n"; echo "接下来可以通过实际的API接口进行测试。
\n"; ?>