2010-11-29 18 views
2

Disons que j'ai 3 punaises: (1) Californie, (2) Floride, (3) New York. Pour que tous les 3 soient visibles, il faudrait que je fasse un zoom arrière assez loin pour voir à peu près tout le pays. Mais disons plutôt que j'avais (1) Californie, (2) Nevada, (3) Texas. Je devrais faire un zoom arrière seulement pour couvrir le coin sud-ouest des États-Unis. Y at-il une fonction dans les cartes bing pour Windows Phone 7 API qui m'aide avec cela. Fondamentalement, je veux faire un zoom arrière juste assez pour voir un ensemble d'emplacements.Zoomer pour voir tous les emplacements dans les cartes bing

Merci!

Répondre

0

Je ne connais pas une fonction qui va faire ce que vous voulez directement, mais vous pouvez trouver la boîte englobante qui entoure juste tous vos emplacements et vous devriez être en mesure de définir la fenêtre dans cette mesure.

Si vous commencez avec une boîte inversée où le coin inférieur gauche est (maxVal, maxVal) et le coin supérieur droit est (-maxVal, -maxval). vous pouvez boucler tous vos points et réinitialiser le bas à gauche si le point est inférieur à sa valeur actuelle ou le haut à droite s'il est supérieur à sa valeur actuelle.

Le résultat final sera la plus petite boîte dans laquelle tout va. Ajouter un peu à la taille pour faire face à l'erreur d'arrondi et pour vous assurer que vos broches sont réellement sur la carte, puis définissez l'étendue de la fenêtre.

+0

N'aurais-je pas besoin de prendre en compte les facteurs de résolution, de zoom, de distance? Je devrais convertir les deux endroits les plus éloignés dans une distance de l'un à l'autre, puis baser sur la résolution du téléphone (480x800) définir le niveau de zoom pour montrer tous les emplacements. Il pourrait finir par ne pas être aussi simple que cela puisse paraître; et je sais que Google Maps a une fonction comme celle-là, donc j'espère que Bing aussi. – Carlo

5

Oui. c'est possible. CurrentItems est la source de ma carte.

var locations = CurrentItems.Select(model => model.Location); 
map.SetView(LocationRect.CreateLocationRect(locations)); 
+0

'LocationRect.CreateLocationRec't n'est pas disponible pour Windows 8 ?? Que devrais-je utiliser ?? –