【问题标题】:How to add marker to rich:gmap component?如何将标记添加到rich:gmap 组件?
【发布时间】:2010-03-20 12:23:45
【问题描述】:

我可以看到我无法在属性中指定 gmap 标记。我想我需要在此标记内使用 a4j 函数。问题是我对这些东西完全是新手......谁能告诉我该怎么做?一步一步的解决方案将不胜感激...我有 api 键和地图组件(使用 lat 和 lng、缩放等)但需要在地图中心留下一个标记...

<rich:gmap gmapVar="map" id="map" gmapKey="ABQIAAAAr_kWlyTgX4yfWopvtEcxDRRRDOqc_-HaCvCgl460ugpXPxZCkhQyHpWen4IabAs4w-La8EuEU92tPw"

我相信有一种简单的方法可以做到这一点......

更新:

<a4j:form>
    <rich:gmap gmapVar="mapVar" gmapKey="ABQIAAAAr_kWlyTgX4yfWopvtEcxDRRRDOqc_-HaCvCgl460ugpXPxZCkhQyHpWen4IabAs4w-La8EuEU92tPw" lat="55.658471" lng="12.59084" mapType="G_NORMAL_MAP" zoom="12">
    </rich:gmap>
    <script type="text/javascript">
          window.onload = function() {
             mapVar.addOverlay(new GMarker(50, 12));
         }
    </script>
</a4j:form>

这不是快乐,我尝试以编程方式做所有事情,但仍然没有快乐。它显示标记,但每次(无论我的坐标是什么)它都显示在左上角。这是程序代码:

<head>
    <title>map</title>
    <script src="http://maps.google.com/maps?file=api&amp;v=2&amp;key=ABQIAAAAr_kWlyTgX4yfWopvtEcxDRRRDOqc_-HaCvCgl460ugpXPxZCkhQyHpWen4IabAs4w-La8EuEU92tPw"
            type="text/javascript"></script>
    <script type="text/javascript">
        function initialize() {
            if (GBrowserIsCompatible()) {
                var map = new GMap2(document.getElementById("map_canvas"));
                map.setCenter(new GLatLng(37.4419, -122.1419), 13);
                map.setUIToDefault();
                map.addOverlay(new GMarker(38, -130));
            }
        }
    </script>
</head>
<body onload="initialize()" onunload="GUnload()">
    <div id="map_canvas" style="width: 500px; height: 300px"></div>
</body>

请帮忙。

更新 2: map.jsp 文件主体:

<f:view>
    <html xmlns="http://www.w3.org/1999/xhtml">
        <body>
            <a4j:form>
                <rich:gmap id="mapVar" gmapVar="mapVar" gmapKey="ABQIAAAAr_kWlyTgX4yfWopvtEcxDRRRDOqc_-HaCvCgl460ugpXPxZCkhQyHpWen4IabAs4w-La8EuEU92tPw" lat="55.664515" lng="12.579517" mapType="G_NORMAL_MAP" zoom="12">
                </rich:gmap>
                <script type="text/javascript">
                    window.onload = function() {
                        mapVar.addOverlay(new GMarker(new GLatLng(55.658471, 12.59084)));
                    }
                </script>

            </a4j:form>
        </body>
    </html>
</f:view>

【问题讨论】:

    标签: jsf richfaces ajax4jsf


    【解决方案1】:

    例如:

    <rich:gmap var="mapVar" ... />
    

    然后(在 javascript 块中,在 &lt;rich:gmap&gt; 的定义下方)

    window.onload = function() {
        mapVar.addOverlay(
            new GMarker(new GLatLng(#{yourBean.lat}, #{yourBean.lng})));
    }
    

    您应该查看Google maps API,了解加载地图的所有可能方式。

    【讨论】:

    • 好的,但是我在哪里输入这个 mapVar.addOverlay?我知道这是一个愚蠢的问题,但我是这个领域的新手...... :(
    • @ortho 查看我的更新。尤其是当您是新手时,我建议您通读所用技术的文档。
    • 你能看看下面的例子吗?
    • @ortho - SO 不是论坛。更新您的问题,而不是发布答案。至于您的更新 - GMarker 需要一个 GLatLng 参数 - 实例化(如我的更新所示)
    • @bozho 抱歉,现在更新了。我已经添加了这个名为 map.jsp 的组件的源代码(我有两个版本,另一个是:map.xhtml)。我现在可以制作程序版本(纯 javascript),但是我在主文件中的模板存在问题。在这种情况下,我宁愿让它在这个rich:gmap 组件中工作。问题是窗口类不包含“onload”方法,当我输入地图的名称(此处为 mapVar)时,它也找不到它。我觉得我错过了一些明显的东西,但我找不到它是什么,请帮忙。
    猜你喜欢
    • 2015-10-15
    • 1970-01-01
    • 1970-01-01
    • 2011-03-09
    • 1970-01-01
    • 2021-07-31
    • 2020-01-15
    • 1970-01-01
    • 2019-05-13
    相关资源
    最近更新 更多