コード例 #1
0
ファイル: GeoUtils.hpp プロジェクト: gitter-badger/utymap
 // Converts Latitude/Longitude to quadkey
 static QuadKey latLonToQuadKey(const GeoCoordinate& coordinate, int levelOfDetail)
 {
     QuadKey quadKey;
     quadKey.tileX = lonToTileX(clamp(coordinate.longitude, -179.9999999, 179.9999999), levelOfDetail);
     quadKey.tileY = latToTileY(clamp(coordinate.latitude, -85.05112877, 85.05112877), levelOfDetail);
     quadKey.levelOfDetail = levelOfDetail;
     return quadKey;
 }
コード例 #2
0
ファイル: OSMTileLayer.cpp プロジェクト: atdyer/SMT
void OSMTileLayer::RefreshTiles()
{
	if (tileServer && renderSurface && camera && fort14)
	{
		int newZoom = CalculateZoomLevel(surfaceDimension, 1.2);

		if (newZoom != zoom)
		{
			renderSurface->ClearTextures();
		}

		zoom = newZoom;

		// Convert screen coordinates to normalized coordinates
		float normX, normY;
		camera->GetUnprojectedPoint(0, 0, &normX, &normY);

		// Convert normalized coordiantes to lat/long
		float geoX = fort14->GetUnprojectedX(normX);
		float geoY = fort14->GetUnprojectedY(normY);

		// Get the x, y tile coordinates
		int newX = lonToTileX(geoX, zoom);
		int newY = latToTileY(geoY, zoom);

		if (newX != x || newY != y)
		{

			// Convert tile coordinates to lat/long
			float geoXnew = tileXToLon(newX, zoom);
			float geoYnew = tileYToLat(newY, zoom);
			float geoXnewNext = tileXToLon(newX + 1, zoom);
			float geoYnewNext = tileYToLat(newY + 1, zoom);

			// Convert lat/long to normalized coordinates
			float normXnew = fort14->GetNormalizedX(geoXnew);
			float normYnew = fort14->GetNormalizedY(geoYnew);
			float normXnewNext = fort14->GetNormalizedX(geoXnewNext);
			float normYnewNext = fort14->GetNormalizedY(geoYnewNext);

			// Calculate the width and height
			float width = normXnewNext - normXnew;
			float height = normYnewNext - normYnew;

			renderSurface->UpdateSurfacePosition(normXnew, normYnew, width, height);

//			std::cout << "Old Coords: (" << x << ", " << y << ")\t" <<
//				     "New Coords: (" << newX << ", " << newY << ")" << std::endl;

			x = newX;
			y = newY;
		}

		if (currentType == SatelliteMap)
			tileServer->setBoundingBox(SatelliteTile, x, y, zoom);
		else if (currentType == StreetMap)
			tileServer->setBoundingBox(StreetTile, x, y, zoom);
		else if (currentType == TerrainMap)
			tileServer->setBoundingBox(TerrainTile, x, y, zoom);

	}
}
コード例 #3
0
ファイル: GeoUtils.hpp プロジェクト: reinterpretcat/utymap
 /// Converts Latitude/Longitude to quadkey
 static QuadKey GeoCoordinateToQuadKey(const GeoCoordinate &coordinate, int levelOfDetail) {
   return QuadKey(levelOfDetail,
                  lonToTileX(clamp(coordinate.longitude, -179.9999999, 179.9999999), levelOfDetail),
                  latToTileY(clamp(coordinate.latitude, -85.05112877, 85.05112877), levelOfDetail));
 }