@@ -163,15 +163,42 @@ public function __construct(LatLng $centerMap, int $zoom, XY $outputSize)
163
163
$ x = static ::lngToXTile ($ centerMap ->getLng (), $ zoom );
164
164
$ y = static ::latToYTile ($ centerMap ->getLat (), $ zoom );
165
165
166
- $ this ->tileTopLeft = new XY ($ x - \ceil ($ startX / 256 ), $ y - \ceil ($ startY / 256 ));
167
- $ this ->tileBottomRight = new XY ($ x + \floor (($ outputSize ->getX () - $ startX ) / 256 ), $ y + \floor (($ outputSize ->getY () - $ startY ) / 256 ));
168
- $ this ->mapCropTopLeft = new XY (256 - $ startX % 256 , 256 - $ startY % 256 );
169
- $ this ->mapCropBottomRight = new XY (($ outputSize ->getX () - $ startX ) % 256 , ($ outputSize ->getY () - $ startY ) % 256 );
170
-
171
- $ this ->latLngTopLeft = new LatLng (static ::tilePxToLat ($ this ->mapCropTopLeft ->getY (), $ this ->tileTopLeft ->getY (), $ zoom ), static ::tilePxToLng ($ this ->mapCropTopLeft ->getX (), $ this ->tileTopLeft ->getX (), $ zoom ));
172
- $ this ->latLngTopRight = new LatLng (static ::tilePxToLat ($ this ->mapCropTopLeft ->getY (), $ this ->tileTopLeft ->getY (), $ zoom ), static ::tilePxToLng ($ this ->mapCropBottomRight ->getX (), $ this ->tileBottomRight ->getX (), $ zoom ));
173
- $ this ->latLngBottomLeft = new LatLng (static ::tilePxToLat ($ this ->mapCropBottomRight ->getY (), $ this ->tileBottomRight ->getY (), $ zoom ), static ::tilePxToLng ($ this ->mapCropTopLeft ->getX (), $ this ->tileTopLeft ->getX (), $ zoom ));
174
- $ this ->latLngBottomRight = new LatLng (static ::tilePxToLat ($ this ->mapCropBottomRight ->getY (), $ this ->tileBottomRight ->getY (), $ zoom ), static ::tilePxToLng ($ this ->mapCropBottomRight ->getX (), $ this ->tileBottomRight ->getX (), $ zoom ));
166
+ $ rightSize = $ outputSize ->getX () - $ startX ;
167
+ $ bottomSize = $ outputSize ->getY () - $ startY ;
168
+
169
+ $ this ->mapCropTopLeft = new XY (
170
+ $ startX < 0 ? \abs ($ startX ) : ($ startX % 256 == 0 ? 0 : 256 - $ startX % 256 ),
171
+ $ startY < 0 ? \abs ($ startY ) : ($ startY % 256 == 0 ? 0 : 256 - $ startY % 256 )
172
+ );
173
+ $ this ->mapCropBottomRight = new XY (
174
+ ($ rightSize % 256 == 0 ? 0 : 256 - $ rightSize % 256 ),
175
+ ($ bottomSize % 256 == 0 ? 0 : 256 - $ bottomSize % 256 )
176
+ );
177
+ $ this ->tileTopLeft = new XY (
178
+ $ x - \ceil ($ startX / 256 ),
179
+ $ y - \ceil ($ startY / 256 )
180
+ );
181
+ $ this ->tileBottomRight = new XY (
182
+ $ x - 1 + \ceil ($ rightSize / 256 ),
183
+ $ y - 1 + \ceil ($ bottomSize / 256 )
184
+ );
185
+
186
+ $ this ->latLngTopLeft = new LatLng (
187
+ static ::tilePxToLat ($ this ->mapCropTopLeft ->getY (), $ this ->tileTopLeft ->getY (), $ zoom ),
188
+ static ::tilePxToLng ($ this ->mapCropTopLeft ->getX (), $ this ->tileTopLeft ->getX (), $ zoom )
189
+ );
190
+ $ this ->latLngTopRight = new LatLng (
191
+ static ::tilePxToLat ($ this ->mapCropTopLeft ->getY (), $ this ->tileTopLeft ->getY (), $ zoom ),
192
+ static ::tilePxToLng ($ this ->mapCropBottomRight ->getX (), $ this ->tileBottomRight ->getX (), $ zoom )
193
+ );
194
+ $ this ->latLngBottomLeft = new LatLng (
195
+ static ::tilePxToLat ($ this ->mapCropBottomRight ->getY (), $ this ->tileBottomRight ->getY (), $ zoom ),
196
+ static ::tilePxToLng ($ this ->mapCropTopLeft ->getX (), $ this ->tileTopLeft ->getX (), $ zoom )
197
+ );
198
+ $ this ->latLngBottomRight = new LatLng (
199
+ static ::tilePxToLat ($ this ->mapCropBottomRight ->getY (), $ this ->tileBottomRight ->getY (), $ zoom ),
200
+ static ::tilePxToLng ($ this ->mapCropBottomRight ->getX (), $ this ->tileBottomRight ->getX (), $ zoom )
201
+ );
175
202
}
176
203
177
204
0 commit comments