Georg fährt extra nach Berlin um Steve Ballmer zu treffen

BingMapsTask Center und BingMapsDirectionsTask Start und End

Neu­lich woll­te ich in einer App die bei­den neu­en Tasks Bing­Map­sTask und Bing­Maps­Di­rec­tion­s­Task ein­bau­en.

Der Bing­Map­sTask soll­te in mei­ner Anwen­dung so funk­tio­nie­ren, dass er einen von der App über­ge­be­nen Ort auf der Kar­te zen­triert. Der Task hat dafür eine Eigen­schaft Cen­ter. Aber was pas­siert, wenn man dem Task über die­se Eigen­schaft eine Geo­Coor­di­na­te mit gibt? Nichts! Die Kar­te bleibt genau in der Ansicht, in der sie zuletzt war. Zunächst dach­te ich, dass es an einer Kom­bi­na­ti­on der Eigen­schaf­ten des Bing­Map­sTask lag (man kann auch noch einen Such­be­griff und die Zoom­stu­fe set­zen). Aber egal, was ich dem Task über­ge­ben habe, der über­ge­be­ne Ort wur­de nicht zen­triert.

Wie zum Glück hier beschrie­ben liegt das offen­bar dar­an, dass der Bing­Map­sTask die per Cen­ter über­ge­be­nen Koor­di­na­ten intern in einen String umwan­delt und dabei die loka­len Ein­stel­lun­gen für das Dezi­mal­stel­len-Tren­nungs­zei­chen igno­riert. Eine deut­sche 41,1234 wird des­halb im Bing­Map­sTask zu einer 411234. Zum Glück ist in dem Blog auch ein Work­around beschrie­ben:

Man setzt die Cur­rent­Cul­tu­re vor Auf­ruf des Tasks auf en-US.

Dann wer­den die Fließ­kom­ma­zah­len rich­tig gewan­delt und nach Been­di­gung des Tasks setzt man die Cur­rent­Cul­tu­re wie­der zurück. Das Gan­ze sieht dann zum Bei­spiel so aus:

string realCulture = 
   System.Threading.Thread.CurrentThread.CurrentCulture.Name;
try
{
   var task = new Microsoft.Phone.Tasks.BingMapsTask();

   task.Center = 
      new System.Device.Location.GeoCoordinate(lat, lon);
   task.ZoomLevel = 18;

   Thread.CurrentThread.CurrentCulture = 
      new CultureInfo("en-US");
   task.Show();
}
catch { }
finally
{
   Thread.CurrentThread.CurrentCulture = 
      new CultureInfo(realCulture);
}

Der sel­be Wor­karaund ist übri­gens auch beim Bing­Maps­Di­rec­tion­s­Task nötig, um Start und End zu über­ge­ben.

Ein Kommentar

  • Vie­len Dank, das hat gehol­fen!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert