【问题标题】:Bing Maps v7 EntityCollection not creating pushpins in DOMBing Maps v7 EntityCollection 不在 DOM 中创建图钉
【发布时间】:2014-06-11 17:00:34
【问题描述】:

我正在制作一个基于 Bing 地图 AJAX v7 API 的网络应用程序。首先,我将一组图钉添加到 EntityCollection,地图处于缩放状态 7,使用以下代码:

PinPrefix='pinFS'
TotCnt++;
var PinPos = new Microsoft.Maps.Location(Lat, Lng);
pin = new Microsoft.Maps.Pushpin(PinPos, { text: Id, typeName: pinPrefix + TotCnt, icon: image,  width: 32, textOffset: offset });
LayerFDS.push(pin);
$('.' + pinPrefix + TotCnt).data('Stat', Stat);
$('.' + pinPrefix + TotCnt).data('Phon', Phon);
$('.' + pinPrefix + TotCnt).data('Fax', Fax);

如果我运行相同的代码,但缩放状态为 18,则图钉是在 EntityCollection 中创建的,而不是在 DOM 中。如果我尝试提取“传真”的值(使用 var XX=$('.' + pinPrefix + TotCnt).data('Fax') )返回“未定义”。当缩放返回到 7 时,实际推送是在 DOM 中创建的,但我需要将这些值存储在创建图钉的循环中。有任何想法吗?无论缩放状态如何,都可以同时在 EntityCollecion 和 DOM 中创建图钉?

【问题讨论】:

    标签: jquery bing-maps


    【解决方案1】:

    如果 pin 不在视图中,则可能不会在 DOM 中呈现。这是设计使然。如果地图不这样做,我们很幸运能够在地图变慢之前在地图上加载 100 个图钉,相反我们可以放几千个。将数据连接到图钉的正确方法是将属性添加到图钉类,如“元数据”,并将数据作为对象存储在该属性中。例如 pin.metadata = { myval : 7}

    您还可以将 id 属性添加到图钉,然后循环遍历实体集合并搜索 id 值。这是一个代码示例:http://rbrundritt.wordpress.com/2012/04/02/get-entity-by-property-in-bing-maps-v7/

    【讨论】:

    • 我采用了第二种方法(遍历所有实体)。我附加了一个函数来映射“viewchangedend”事件。在函数中,首先检查pushpin.toString="[Pushpin]",然后检查pushpin.getLocation 是否包含在map.getBounds 中。如果在可见视口内,则检查 $('.pushpin').data('fax'),如果返回未定义,则分配所需的所有值,如果返回与“未定义”不同的任何值,则继续下一个图钉。我知道这不是最有效的方法,但到目前为止有效。谢谢@rbrunditt
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-15
    • 1970-01-01
    相关资源
    最近更新 更多