|
This is a C++ attempt using two labels. It works fine when first loaded but after loading another map programatically, the labels are no longer updated and reaction time slows, eg when using the mouse to select an area, the drawing of the selection box is noticably slowed. I tried disabling the mousemove event while the different map was being loaded, but it didn't help.
[code]
private: System::Void axMappointControl1_MouseMoveEvent(System::Object * sender, AxInterop::MapPoint::_IMappointCtrlEvents_MouseMov eEvent * e)
{
MapPoint::Location * loc=pMap->XYToLocation(e->x,e->y);
//following instruction causes problems after a map is loaded programatically;
double lat=90-180*pMap->Distance(locNorthPole,loc)/halfEarth;
double d=pMap->Distance(pMap->GetLocation(lat,0,1),loc);
double rlat=(lat/180)*Math::PI;
double lon=180*Math::Acos((Math::Cos((d*2*Math::PI)/(2*halfEarth))-Math::Sin(rlat)*Math::Sin(rlat))/(Math::Cos(rlat)*Math::Cos(rlat)))/Math::PI;
if(pMap->Distance(locSantaCruz,loc)<(halfEarth/2)) lon=-lon;
labelLatitude->Text=lat.ToString(S"F4");
labelLongitude->Text=lon.ToString(S"F4");
}
[\code] |