Question

J'ai pris une grande image et divisée dans des carreaux carrés (256x256). Il est fait pour google maps aussi, de sorte que l'image entière est divisée en z_x_y.png (En fonction du niveau de zoom).

z = 0 => Dalle 1x1 z = 1 => 2x2 tilesthe z = 2 => carreaux 4x4

Mon IMAGEMAP est « plat » et ne repose pas sur une sphère comme le mappemonde.

Je vais utiliser cette carte sur une application mobile Windows (qui n'a pas l'API de Google), et tous les « points d'intérêts » est inséré dans une base de données par la longitude et la latitude. Et depuis que je dois faire cela pour Windows mobile, je viens de système de coordonnées XY.

Est-il suffisant pour utiliser ceci:

MAP_WIDTH  = 256*TILES_W;
MAP_HEIGHT = 256*TILES_H;

function convert(int lat, int lon)
{
    int y = (int)((-1 * lat) + 90) * (MAP_HEIGHT / 180);
    int x = (int)(lon + 180) * (MAP_WIDTH / 360);

    ImagePoint p = new ImagePoint(x,y);  // An object which holds the coordinates

    return p;
}

Ou ai-je besoin d'une technique de projection?

Merci d'avance. S'il vous plaît demander, si quelque chose ne sait pas.

Était-ce utile?

La solution

Si vous voulez que vos points d'intérêt pour aligner correctement sur votre image, vous devez vous assurer que la projection et système de coordonnées correspondent à celles utilisées dans l'image. On dirait que vous avez fait l'image? On peut donc supposer que vous connaissez la projection? Assurez-vous convert utilise la même projection.

Je ne suis pas sûr que ce soit pertinent, mais Google Maps utilise une projection sphérique basée sur mercator WGS84 .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top