1

我需要一些帮助,我认为这篇文章会对我有所帮助,但我对谷歌地图和 Visualforce 还是很陌生。由 eyecream 回答请参阅帖子如何将 Salesforce 与 Google 地图集成?.

我的问题非常相似,但我不需要搜索记录来绘制它们作为相关列表可用。

我有两个名为Wildlife__c和的自定义对象Sighting__c

Sightings 具有对野生动物的查找功能,因此您可以记录对特定动物的目击。目击对象有两个自定义字段long__clat__c.

我想要野生动物页面上的地图,它可以浏览并在地图上放置所有不同目击的标记。该地图将被简单地添加为野生动物页面的一个组件。

我可以在目击对象上生成具有一次目击的地图,但我可以在野生动物对象上复制它。我想我需要创建一个数组,但不确定如何。

非常感谢

罗斯

4

1 回答 1

2

您需要找出包含相关列表的 html 表的 ID。您可以为此使用 Firefox 插件(我更喜欢Firebug,但Web Developer Toolbar也很酷)。对于 Internet Explorer……我猜是“调试器”;如果您安装了 Visual Studio 或某些 IE 插件,则放在 JavaScript 中的语句会起作用。

无论采用何种方式,您都应该能够精确定位到类似于以下内容的 HTML:

<div class="pbBody" id="0017000000Lg8Wg_RelatedOpportunityList_body">
    <table class="list" border="0" cellpadding="0" cellspacing="0">
    ...

现在看看我的回答中的 JavaScript,尤其是这一部分:

var htmlTable = document.getElementById('j_id0:j_id2:j_id7:accountTable').getElementsByTagName("tbody")[0].getElementsByTagName("tr");
for (var i = 0; i < htmlTable.length; ++i) {
    names.push(htmlTable[i].getElementsByTagName("td")[0]);

    // We need to sanitize addresses a bit (remove newlines and extra spaces).
    var address = htmlTable[i].getElementsByTagName("td")[1].innerHTML;
    addresses.push(address.replace(/\n/g, "").replace(/^\s+/,"").replace(/\s+$/,""));
}

将您找到的 ID 插入第一行。找出哪个 <td> 单元格包含您的纬度和经度信息。您可以再次使用调试器找到它,或者通过将 alert() 框放入循环中进行实验。

最后一部分是您不需要对地址进行地理编码,您已经有了 LAT 和 LONG。所以直接跳到函数 finalizeDrawingMap() 并重用它的内容。您可以跳过尝试猜测最佳缩放的部分(甚至更好 - 如果有更好的技巧,请检查 Google Maps API;这是快速而丑陋的 hack)。你需要的核心在于

for(i=0;i < coordinates.length; i++){
    markers.push(new google.maps.Marker({ position: coordinates[i], map: map, title: names[i].getElementsByTagName("a")[0].innerHTML, zIndex:i}));
    ...
}

祝你好运,欢迎来到 StackOverflow :)

于 2010-08-25T16:46:08.880 回答