小编Knu*_*ius的帖子

在Google地图中优化SVG标记

在为图标使用SVG符号时,是否有很好的方法可以优化Google Maps API v3如何在HTML文档中绘制标记?以下是使用SVG符号的标记示例:

  var star = {
    path: 'M 125,5 155,90 245,90 175,145 200,230 125,180 50,230 75,145 5,90 95,90 z',
    fillColor: 'yellow'
  };

  var marker = new google.maps.Marker({
    position: map.getCenter(),
    icon: star,
    map: map,
    optimized: true //Does not seem to do anything..
  });
Run Code Online (Sandbox Code Playgroud)

谷歌有一个名为"优化"的属性,可以在标记上设置,当使用例如PNG图标而不是SVG图形时,这可以正常工作:谷歌每个图块创建一个单独的画布而不是每个图标一个图像,这显然更好地缩放.

然而,使用SVG标记时,"优化"属性似乎没有做任何事情:它们似乎总是在每个标记的一个画布中绘制.当我有许多标记时,某些浏览器会出现性能问题.Chrome通常可以很好地处理它,但IE9例如在显示重大性能问题之前不会处理许多标记.在这种情况下,群集不是一种选择.

有谁知道优化这个的好方法,以便浏览器可以同时处理更多的SVG标记?

javascript svg google-maps google-maps-api-3

29
推荐指数
1
解决办法
3954
查看次数

使用TeamCity REST API跟踪构建进度

我使用TeamCity(7.0)REST API来允许开发人员触发自定义构建.我将构建添加到队列中,如下所示:

HTTP://teamcity/httpAuth/action.html add2Queue = [buildTypeId]名称= [PROPNAME]值= [propValue]

我的问题是我如何才能最好地跟踪刚刚触发的构建进度.REST调用不会返回有关分配给构建的构建ID的任何信息,因此即使我轮询构建列表(运行/已完成),我也不知道其中一个是否是我触发的那个.队列中的同一个buildTypeId可能有多个构建,所以我需要一种方法来分离我所追求的那个.

我在某处读到一个建议,你可以为你放入队列的每个构建添加一个具有唯一值的构建属性,然后轮询构建列表并查找具有该确切属性值的构建列表.然而,我没有找到列出构建属性的方法,所以我仍然卡住了.此REST调用不提供有关属性的信息:

HTTP://的TeamCity/httpAuth /应用程序/静止/建立/定位器= buildType:[buildTypeId]

关于如何解决这个问题的任何建议?理想情况下,我想知道构建是否在队列中,如果它正在运行,并且当它完成时我想获得状态.然而,最重要的是知道它是否已完成以及状态如何.

rest teamcity continuous-integration

9
推荐指数
2
解决办法
7867
查看次数

带有点击处理程序和滚动条的Google地图信息框

我有一个使用Google Maps javscript API和Infobox插件的应用程序(本机InfoWindow的可自定义版本).

它工作正常,直到我有以下用例:如果内容很大,我需要一个带滚动条的信息框,并且它还需要包含一些带有点击监听器的HTML元素.

我通常需要做的是支持信息框内的点击处理程序,设置enableEventPropagation = true,并使用jQuery委托来设置点击处理程序.如果我不允许事件传播,则jQuery委托不起作用.

这工作正常,直到我必须将它与具有功能滚动条组合!我发现滚动条仅在我有enableEventPropagation = false时才有效,因为如果启用了事件传播,则拖动事件只会传递给地图并被解释为平移.

有谁知道我能做些什么,在信息框内容上都有一个正常运行的滚动条,并且能够在某些内容上设置点击处理程序?

对我来说,启用事件导致错误将解决这两个问题是合乎逻辑的,因为我不明白为什么需要将click事件传播到地图以便触发我附加到html元素的处理程序.

这是我的信息框的设置对象:

{
        content: "[my html in here]",
        disableAutoPan: false,
        pixelOffset: new google.maps.Size(-77, 10),
        boxClass: "infoBox",
        infoBoxClearance: new google.maps.Size(18, 30),
        closeBoxMargin: "14px 6px",
        pane: "floatPane",
        enableEventPropagation: true
};
Run Code Online (Sandbox Code Playgroud)

jquery google-maps-api-3

7
推荐指数
1
解决办法
2586
查看次数

为什么不增加maxQueryStringLength?

我时不时地处于需要从Java脚本客户端向应用程序(运行IIS 7)发送相当大的ajax GET请求的位置。如果URL长度超过2048个字符,则默认情况下会出现异常。一个简单的解决方法是增加maxQueryStringLength使用web.config。

我的问题是,是否有充分的理由为什么您不应该走这条路,而实际上是否被认为是黑客?我已经读过一些关于不同浏览器限制地址字段中字符数的内容,但是如果您仅使用Ajax,那可能不是值得考虑的问题吗?

我知道,在许多情况下,当您想在请求中传递大量数据时,应该考虑使用POST,但是有时这不是一个选择。例如,当您的URL返回文件供用户下载时。

我必须增加的一个具体示例maxQueryStringLength是:用户请求地图中某些受多边形限制的位置。如果要在URL中发送此多边形,则很容易超过最大URL长度。

asp.net-mvc asp.net-mvc-3

5
推荐指数
1
解决办法
1178
查看次数

React.js:为什么没有componentDidRender事件?

我刚刚开始使用React,有几次我对自己想:“为什么没有componentDidRender事件?”。

假设我有一个将表呈现给DOM的组件,并且我想在该表上使用bootstrap-sortable来允许用户对他想要的任何列进行排序。对于bootstrap-sortable,您需要$.boostrapSortable()在绘制表后运行,以初始化插件。

如我所见,React组件上有两个处理程序,出于这个目的考虑使用它们是合乎逻辑的:

  • componentDidMount:这不起作用,因为在执行的这一点上似乎没有更新DOM。

  • componentDidUpdate:这可能可行,但不会在初始渲染时触发。

我并不是说React实际上缺少componentDidRender函数,因为我认为关于为什么不存在它,这是一个非常合理的解释。我只是在问是否有人可以解释为什么没有这种功能,以及处理上述情况的“反应方式”是什么。

javascript events dom reactjs

5
推荐指数
1
解决办法
4712
查看次数

从可点击的Google地图叠加层传播鼠标事件

是否可以在可以点击的Google地图(圆形,多边形等)中叠加,但仍然将鼠标事件传播到底层地图?目前,似乎可点击的圆圈将始终隐藏地图中的事件.

示例:这里我想点击圆圈时点击处理程序:http://jsfiddle.net/tW9SE/

var circle = new google.maps.Circle({
    map: map,
    center: center,
    radius: 100000,
    clickable: true
});

google.maps.event.addListener(map, "click", function(){
    alert("Map clicked");
});

google.maps.event.addListener(circle, "click", function(){
    alert("Circle clicked");
});
Run Code Online (Sandbox Code Playgroud)

我无法在覆盖上找到允许事件传播的属性,除了设置clickable = false,从而禁用覆盖本身上的事件处理程序.

javascript events google-maps

3
推荐指数
1
解决办法
3236
查看次数

层次结构中的多个AppSettings.config文件

在创建ASP.Net MVC应用程序时,我有一个问题让我感到震惊:假设您有一个应用程序要部署到多个客户.应用程序代码是相同的,但您希望每个客户都能拥有一个appSettings.config文件,这样您只需更改web.config中appSettings标记的configSource即可部署到不同的客户(稍微简化一下) ,但仍然).

然后您意识到appSettings.config中50%的内容对所有客户都是通用的,只有50%是依赖于客户的.您可能最终要做的是在所有appSettings文件中都有重复的条目,这是一个主要的缺陷,因为如果您想对应用程序进行应用程序范围的更改,则需要记住更新所有这些条目.

在这种情况下,我真的希望有一种分层系统,你可以在单独的文件中有一个"基本配置"和"客户配置".然后我希望ConfigurationManager首先检查客户配置中的值,如果没有在那里定义它,它将转到基本配置.

我没有找到一种直接的解决方法,使用ASP.Net MVC4中的开箱即用功能.它是退出的,还是我需要以某种方式绕过默认的ConfigurationManager类?我可以创建自己的类,并通过调用我自己的实现来替换对ConfigurationManager.AppSettings [key]的所有调用,但如果可以的话,我宁愿避免这样做.我希望能够使用内置ConfigurationManager负责的一些基本功能,如缓存等.

以前解决过类似问题的人?我一直认为这似乎是一种常见的情况..

asp.net-mvc configuration appsettings asp.net-mvc-4

2
推荐指数
1
解决办法
1784
查看次数

Knockout.js和复选框的双向绑定

第一:我是淘汰js的新手,并试图围绕淘汰/ mvvm的思维方式,所以如果我的问题变得微不足道,请原谅我.

我所拥有的是以下情况:我有一个淘汰视图模型,其中包含所选票证对象的observableArray.此数组表示用户定义的更大票数集的选择/子集.整个票证集列在jqgrid表中,每行都有一个复选框,该复选框应该告诉您是否选择了每个票证.这意味着只要"selectedTickets"数组发生更改,就需要更新复选框的值.除此之外,我还希望用户能够单击每个复选框,以便从选择中添加/删除票证.看起来似乎是一个相当可接受的功能,对吧?

然而,我确实无法看到如何使用敲击"已检查"绑定来实现此目的.我的第一个想法是在名为"isSelected"的viewmodel对象上使用计算/从属observable,它将反映selectedTickets数组中的更改,并根据票证是否在selectedTickets数组中返回true或false.这里的第一个问题是,然后我需要将一个参数传递给计算的observable,说明它应该查找哪个票证ID,以及从我可以看到的只能在可写的计算的observable上工作.然而,获取复选框的状态看起来不像是写操作,因此已经开始闻到一些东西.下一个问题是绑定需要双向,因为我希望用户能够更改每个复选框的状态并相应地更新selectedTickets数组.这是一个不同的操作,因为它实际上会删除/添加selectedTickets数组的票证.这将再次触发计算的observable尝试设置复选框的状态.似乎这两个用例可能最终会像无限循环一样,如果我尝试这样做的话.我没有找到一种很好的方法来组合这两个用例,只需使用复选框的选中绑定.

我当然可以手动对复选框进行事件处理,通过将侦听器连接到复选框上的已更改事件以及knockout视图模型中的selectedTickets数组,但我希望这可以通过敲除绑定更加自动化.

希望有一些淘汰赛大师可以指导我走上一条好路,因为我觉得我已经偏离了这个.

javascript knockout.js

0
推荐指数
1
解决办法
4102
查看次数

在跟踪锚点的同时旋转符号

我刚刚开始测试在 Google Maps API v3.9 中添加的新符号功能。我想在地图上有多个类似三角形的符号,并且我希望能够以编程方式旋转它们。我以前拥有的是一组 png 图像,其中每个图像都是上一个图像的副本,只是旋转了 10 度(MyIcon_0、MyIcon_10、...、MyIcon350)。然后我会绘制最接近我想要的旋转角度的图像。

相反,使用新的符号功能似乎是一种更简单的方法,它以编程方式完全控制旋转和颜色。

使用 SVG 路径符号,我定义了一个简单的三角形,并将其粘贴在一个 Marker 上,如下所示:

var markerOptions = {
   icon: {
        path: "M 0 5 L 20 5 L 10 40 z",
        rotation: rotationAngle,
        anchor: [something]
    },
    position: position
};

var marker = new Marker(markerOptions);
Run Code Online (Sandbox Code Playgroud)

只要将“rotationAngle”设置为 0,就可以正常工作,因为我知道锚点必须是什么才能将符号放在地图中的正确位置。我希望锚点始终位于三角形的“锐角”处。

当我有另一个旋转角度时会出现问题。符号绘制在矩形画布上,画布的尺寸似乎是自动计算的,以最适合里面的形状。当您旋转像这个三角形这样的符号时,您将拥有一个基于旋转具有不同尺寸的画布,这使得很难在地图上正确定位符号,因为锚点似乎是相对于画布尺寸设置的。

如果我只能控制实际画布的大小,我将能够绘制符号,以便锚点始终位于画布的中心,然后可以设置一个恒定的锚点。这有可能吗?我在考虑在形状周围绘制一个不可见的圆圈的可能性,这将确保画布大小保持不变,但我对 SVG 路径表示法不太熟悉,我不知道这是否可以实现。

将感谢您对此事的任何建设性反馈。

javascript svg google-maps rotation google-maps-api-3

0
推荐指数
1
解决办法
2101
查看次数

高等级中单独着色的数据范围

我的高图中有一个列范围系列,我希望能够为一系列中的每个范围设置特定的颜色.只要我使用一种颜色,这很好用:

data: [[1, 5, 10], [2, 10, 20]]
Run Code Online (Sandbox Code Playgroud)

这里每个列表中的第一个值是X,接下来的两个是Y范围的开始和结束.为了为每个范围设置单独的颜色,我想我需要使用"对象表示法"而不是数组表示法,所以我尝试了这个:

data: [{ 
    x: 1,
    y: [5,10],
    fillColor: "red"
},{
    x: 2,
    y: [10,20],
    fillColor: "blue"
}]
Run Code Online (Sandbox Code Playgroud)

然而,这确实无效(获得无效值).我无法看到API文档涵盖了这种情况:http://api.highcharts.com/highcharts#series.data

有没有人知道我如何使用对象表示法得到范围(两个Y值),或者如果有另一种方法我可以不同地为范围着色?PS:我的Y值实际上是日期范围,但我只是简化了上面的例子.

编辑:这是一个jsfiddle显示我试图实现的目标:http://jsfiddle.net/Q2JMF/1/.如果您将类型更改为"列",并将y值更改为只有一个整数,您会看到它工作正常.但是对于columnrange我无法让它工作.

javascript highcharts

0
推荐指数
1
解决办法
5738
查看次数

"list-contains"操作的批处理命令

我有这个命令遍历目录中的所有文件夹并删除所有文件夹,除了一个:

FOR /D %i IN ("Directory\*") DO IF /I NOT "%i" == "FolderToKeep" RD /S/Q "%i"
Run Code Online (Sandbox Code Playgroud)

现在我需要它来保留两个特定文件夹而不是一个.起初我认为这只是为比较添加一些简单的OR逻辑,但似乎批处理不支持OR和AND等逻辑运算符.那么实现这一目标的最佳方法是什么?如果OR命令不存在,可能有一些功能可以让你测试变量是否包含在列表中?这样的事可能吗?

FOR /D %i IN ("Directory\*") DO IF /I NOT "%i" IN "FolderToKeep","FolderToKeep2" RD /S/Q "%i"
Run Code Online (Sandbox Code Playgroud)

我不熟悉批量编码,如果这看起来微不足道,请原谅.

command-line list batch-file logical-operators

0
推荐指数
3
解决办法
1231
查看次数