我有一个使用Google Earth的Windows窗体应用程序,用户可以在地图上绘制多边形,用作地理围栏.
我想做的是能够缩放到多边形,只需点击一下按钮就可以很好地适应屏幕.一种缩放以适应功能.
找到多边形的中心并将Google Earth相机设置为该纬度/长度很容易.
我需要的是一个算法,它采用一个lats\longs,屏幕高度\宽度的边界框,然后确定设置相机的高度.
有没有人有这个算法或知道哪里可以找到?
谢谢!!
google-earth geospatial google-earth-plugin computational-geometry
我在c#中将com对象定义为动态类型我能够非常轻松地调用方法.但是,当我尝试访问同一对象上的属性时,我得到一个无效的强制转换异常.
有问题的对象是一个数组,从JavaScript传递给托管代码,我希望将它的长度属性作为int.
我知道我遗漏了一些奇怪的东西,因为我没有得到"不包含定义"的异常,我可以使用reflection/InvokeMember轻松访问该属性.
为什么我不能将动态类型的length属性转换为int?
例如
这很失败
dynamic com = comObject;
int i = com.length; // RTBE here.
Run Code Online (Sandbox Code Playgroud)
这个作品
Type type = comObject.GetType();
int i = (int)type.InvokeMember("length", BindingFlags.GetProperty, null, comObject, null);
Run Code Online (Sandbox Code Playgroud)
*更新*
经过大量的测试后,我将这种奇怪的范围缩小到了多维数组的情况.有问题的com对象是从html文档传递到托管代码的参数.对于所有意图和目的,对象有时在JavaScript中看起来像这样.
var x = ["a1", "a2", "a3"];
Run Code Online (Sandbox Code Playgroud)
当像这样的数组进入托管代码时,我可以使用动态类型获得长度AOK.(即这里的第一个例子实际上无效).但是,如果它是一个多维数组,例如JavaScript中的以下结构.
var y = [["b1", "b2", "b3"], "a2", "a3"];
Run Code Online (Sandbox Code Playgroud)
然后我尝试动态访问其长度属性时出错.注意,在这种情况下,我仍然可以通过反射访问长度.在我看来,由于某种原因,当多维数组用作动态类型时,长度属性无法正确映射...
在我的情况下,我已经做了解决(!?)这是在传递它之前向数组添加'length_'属性.
var y = [["b1", "b2", "b3"], "a2", "a3"];
y.length_ = y.length;
Run Code Online (Sandbox Code Playgroud)
现在在托管代码中,我可以按预期访问此属性而不会出现错误.远非理想,但似乎工作......
dynamic com = comObject;
int i = com.length_; // 3!
Run Code Online (Sandbox Code Playgroud)
进一步更新
好的,所以似乎除了属性之外,对象索引也会丢失到动态类型中.再次通过反射可以访问...
失败
dynamic com = comObject; // js …Run Code Online (Sandbox Code Playgroud) 我目前正在使用MATLAB/Simulink和Google Earth进行飞行模拟项目.我想做的是让MATLAB/Simulink进行所有计算和模拟,并使用Google Earth实时显示结果.
为了连接这两个程序,我使用COM接口,而MATLAB/Simulink作为COM-Client,Internet Explorer作为COM服务器.在此之前,我一直在使用Google Earth COM API而不是Google Earth API(javascript版).但是,COM API中的某些功能不可用或有限(例如:俯仰,滚动).
因此,我使用谷歌地球插件.以下是Web应用程序的外观示例.
http://www.hs-augsburg.de/~bizz145/earth/fps/index3.html
使用DOM,我可以写入网页.但我的问题是,如何刷新我在输入区域中所做的更改.是否可以通过COM触发事件(在我的案例中是onClick或onBlur)?有没有更好的解决方案而不是使用Form元素将数据提供给Google Earth?
我有一个目标是iframe的表单.
提交表单时,响应是XML,我有Javascript来分析响应.
我注意到,当在IE上运行时,IE拦截响应并将其视为RSS提要,因此我的代码永远不会收到响应.如果我禁用RSS源(来自互联网选项,内容选项卡)一切正常.
我将响应的内容类型设置为"text/xml; charset = UTF-8"但它仍然不起作用.
有没有解决方法?
我有一个成员函数render().此函数调用类add(any)的另一个成员.这是片段.
render(){
collection.each(this.add);
}
Run Code Online (Sandbox Code Playgroud)
如果我在添加中使用关键字"this",则类型为window.我希望它是成员类的实例.
在构造函数,成员函数或成员访问器中,这是包含类的类实例类型.
阅读文档我可以看到+运算符可以用于组合/组合相同类型的委托.
以同样的方式,我可以看到我可以使用-运算符从组合委托中删除a .
我还注意到该Action类型具有静态Combine和Remove方法,可用于连接两个委托的调用列表,并分别从另一个委托的调用列表中删除委托的调用列表的最后一次出现.
Action a = () => Debug.WriteLine("Invoke a");
Action b = () => Debug.WriteLine("Invoke b");
a += b;
a.Invoke();
//Invoke a
//Invoke b
Action c = () => Debug.WriteLine("Invoke c");
Action d = () => Debug.WriteLine("Invoke d");
Action e = Action.Combine(c, d);
e.Invoke();
//Invoke c
//Invoke d
a -= b;
a.Invoke();
//Invoke a
e = Action.Remove(e, d);
e.Invoke();
//Invoke c
Run Code Online (Sandbox Code Playgroud)
它们在调用列表中如何组合/删除时似乎产生相同的结果.
我已经看到在SO和其他代码中的各种示例中使用的两种方式.有什么理由我应该使用这种或那种方式吗?坑坑洼洼吗?例如-我可以看到线警告a -= b;指出Delegate …
我想在桌面应用程序中使用Google地球.
我的问题是,您认为谷歌提供的这两个API中哪一个具有更多功能和/或最佳支持?
非常感谢你
使用 Plotly.js 创建堆栈条形图后,我注意到它不响应不同的屏幕宽度。如何使图形响应自动适应屏幕宽度的调整大小?
我尝试使用以下方法,但没有用:
window.onresize = function() {
Plotly.Plots.resize('myDiv');
};
Run Code Online (Sandbox Code Playgroud)
window.onresize = function() {
Plotly.Plots.resize('myDiv');
};
Run Code Online (Sandbox Code Playgroud)
var trace1 = {
x: ['Category A', 'Category B', 'Category C', 'Category D ', 'Category E', 'Category F', 'Category G', 'Category H'],
y: [20, 14, 23, 20, 14, 23, 34, 26],
marker: {
color: ['rgba(0,152,212,0.5)', 'rgba(0,152,212,0.5)', 'rgba(0,152,212,0.5)', 'rgba(0,152,212,0.5)', 'rgba(0,152,212,0.5)', 'rgba(0,152,212,0.5)', 'rgba(0,152,212,0.5)', 'rgba(0,152,212,0.5)']
},
name: 'Item 1',
type: 'bar'
};
var trace2 = {
x: ['Category A', 'Category B', 'Category C', 'Category D ', 'Category …Run Code Online (Sandbox Code Playgroud)我一直在使用JavaScript中的模块模式,并对范围和方括号表示法(SBN)有疑问.
请考虑以下简单示例.
(function (module) {
function myMethod(text) {
console.log(text);
}
module.init = function (name) {
// here I want to do something like
// eval(name)("hello");
// using SBN, e.g.
..[name].call(this, "hello");
};
})(window.Module = window.Module || {});
Module.init("myMethod");
Run Code Online (Sandbox Code Playgroud)
从init功能内部可以myMethod使用SBN 进行呼叫吗?
我在合理化和聚合 javascript 中的对象数组时遇到一些麻烦。
给定数组
[{"description":"Bright","size":"2XL","price":10.99},{"description":"Bright","size":"XL","price":10.99},{"description":"Bright","size":"L","price":9.99},{"group":"Foos","description":"Dull","size":"XL","price":9.99},{"description":"Dull","size":"L","price":8.99},{"description":"Dull","size":"2XL","price":9.99},{"description":"Shiny","size":"XL","price":9.99},{"description":"Shiny","size":"S","price":8.99},{"description":"Shiny","size":"3XL","price":10.3},{"description":"Shiny","size":"2XL","price":9.99}]
Run Code Online (Sandbox Code Playgroud)
我正在尝试将其转换为格式的数组(此处实际值可能是错误的)。
[{"descriptions":"Shiny, Bright, Dull","sizeRange":"S - L","price":8.99},{"descriptions":"Shiny, Bright, Dull","sizes":"XL - 2XL","price":9.99},{"descriptions":"Dark","sizes":"S - 2XL","price":10.99}]
Run Code Online (Sandbox Code Playgroud)
也就是说 - 我希望按价格对每组商品进行分组,显示它们的描述和尺寸范围。
到目前为止,这就是我所拥有的,它似乎有效,但看起来很麻烦。事实上,如果使用 lodash 或下划线之类的东西(而不是使用原生 JS)有助于使代码合理化,我真的会非常乐意使用。
function groupBy (array, key) {
return array.reduce(function(value, property) {
(value[property[key]] = value[property[key]] || []).push(property);
return value;
}, {});
};
function unique(array) {
return Array.from(new Set(array));
};
function getRanges(data)
{
var result = [];
// simple map of sizes from smallest to largest to use for sorting
var sizeSort = {'S':1, 'M':2, 'L':3, 'XL':4, '2XL':5, '3XL':6, '4XL':7, …Run Code Online (Sandbox Code Playgroud) javascript ×5
google-earth ×2
html ×2
accessor ×1
arrays ×1
c# ×1
c#-4.0 ×1
delegates ×1
dynamic ×1
geospatial ×1
lodash ×1
matlab ×1
plotly ×1
properties ×1
reflection ×1
rss ×1
scope ×1
sorting ×1
typescript ×1
xml ×1