Пример #1
0
func (bb *BBox) Crosses(coord gopnik.TileCoord) bool {
	if coord.Zoom < bb.MinZoom || coord.Zoom > bb.MaxZoom {
		return false
	}

	lat1, lon1, _ := gproj.FromCoordToLL(coord)
	lat2, lon2, _ := gproj.FromCoordToLL(gopnik.TileCoord{
		X:    coord.X + coord.Size,
		Y:    coord.Y + coord.Size,
		Zoom: coord.Zoom,
	})

	latMin, latMax := minMax(lat1, lat2)
	lonMin, lonMax := minMax(lon1, lon2)

	if !crosses(bb.MinLat, bb.MaxLat, latMin, latMax) {
		return false
	}
	if !crosses(bb.MinLon, bb.MaxLon, lonMin, lonMax) {
		return false
	}
	return true
}
Пример #2
0
func convertCoordByZoom(coord gopnik.TileCoord, zoom uint64) gopnik.TileCoord {
	lat, lon, _ := gproj.FromCoordToLL(coord)
	return gproj.FromLLToCoord(lat, lon, zoom)
}