在我的代码中,我必须在lat/long值对之间进行大量的距离计算.
代码如下所示:
double result = Math.Acos(Math.Sin(lat2rad) * Math.Sin(lat1rad)
+ Math.Cos(lat2rad) * Math.Cos(lat1rad) * Math.Cos(lon2rad - lon1rad));
Run Code Online (Sandbox Code Playgroud)
(lat2rad例如纬度转换为弧度).
我已将此功能确定为我的应用程序的性能瓶颈.有没有办法改善这个?
(因为坐标不同,我不能使用查找表).我也看过这个问题,建议像网格一样的查找方案,这可能是一种可能性.
谢谢你的时间!;-)
在其他地方,有人声称控件的"可见"属性无法本地化.这是半真的.但是,"Visible"属性将LocalizableAttribute设置为true.但这只是意味着该属性被序列化为资源文件.我编写了一个测试程序,该程序具有标签设置为"false"的可见属性,用于Invariant Culture.使表单可本地化我将可见属性更改为德国文化的"true".如果我在系统设置为德语语言环境的情况下启动程序会发生什么?标签保持不可见.检查资源文件Form1.de.resx我可以看到visible属性尚未序列化.但是,如果我手动将其添加到资源文件:
<data name="label1.Visible" type="System.Boolean, mscorlib">
<value>True</value>
</data>
Run Code Online (Sandbox Code Playgroud)
标签出现.我承认有点困惑.两个问题:
编辑:也许我需要澄清我的问题.我的示例程序是一个简单的表单,其默认语言设置为不变.我通过表单设计器手动添加了德语资源.程序在区域设置为german的系统上运行.
情况1
添加到表单中的" 可见 "属性:
1.)在不变文化中设置为false,在德国文化中设置为true(默认).=> panel是隐形的
2.)在Invariant文化中设置为true,在德国文化中设置为false.=> panel是不可见的(按预期工作)
显然,该值仅写入特定于语言的资源文件(如果它不是默认值).
案例2
添加到表单中的标签的" 字体 "属性:
1.)在不变文化中设置为粗体,属性在德国文化中重置为默认值.=>标签不粗体
2.)在不变文化中设置为默认,在德国文化中大胆.=> label为粗体
现在,属性按预期序列化.
这是一个错误还是我错过了什么?