当前位置: 首页 > 知识库问答 >
问题:

如何使用jquery gmap3通过单击链接显示信息窗口

万博涛
2023-03-14

我正在使用jQueryGMAP3显示一个地图,其中包含我构建的搜索结果的标记。每个标记都有一个信息窗口,显示标记所在位置的详细信息,当有人单击地图上的标记时,该信息窗口将显示该信息。在地图下方,我显示了一个找到的结果列表,对于每个找到的结果,我想做的是有一个链接,当有人单击该链接时,页面会向上滚动到地图,然后指向结果所属的标记,信息窗口会自动弹出。可能吗?这是我的密码:

  var base_lat = 33.609063;
  var base_lon = -112.105135;
  var base_markers = [{"latLng":["33.609063","-112.105135"],"data":"<div class=\"estate_info\"><img src=\"\/img\/realestate\/test_estate.jpg\"><b><a href=\"\/charming-payette-lake-cabin-with-private-dock-beach-rl2\">1022 E. St. Mill Valley, CA 85282<\/a><\/b><ul><li><label>Beds:<\/label>6<\/li><li><label>Baths:<\/label>3.0<\/li><li><label>Levels:<\/label>2<\/li><\/ul><ul><li><label>Price:<\/label>$520,000<\/li><li><li><label>Sqft:<\/label>5,600<\/li><li><a href=\"\/charming-payette-lake-cabin-with-private-dock-beach-rl2\">View Details &raquo;<\/a><\/li><\/ul><\/div>","options":{"icon":"\/img\/markers\/number_1.png"}},{"latLng":["33.479913","-111.699535"],"data":"<div class=\"estate_info\"><img src=\"\/img\/realestate\/default_estate.jpg\"><b><a href=\"\/single-level-mountain-view-home-in-central-laveen-rl1\">South of Baseline Rd \/ 51st Ave Laveen, CA 85384<\/a><\/b><ul><li><label>Beds:<\/label>3<\/li><li><label>Baths:<\/label>2.5<\/li><li><label>Levels:<\/label>1<\/li><\/ul><ul><li><label>Price:<\/label>$124,563<\/li><li><li><label>Sqft:<\/label>2,500<\/li><li><a href=\"\/single-level-mountain-view-home-in-central-laveen-rl1\">View Details &raquo;<\/a><\/li><\/ul><\/div>","options":{"icon":"\/img\/markers\/number_2.png"}}];

        $('#searchmap').gmap3({

        map:{

            options:{

                center:[base_lat,base_lon],
                zoom: 9,
                mapTypeControl: true,
                mapTypeControlOptions: {
                  style: google.maps.MapTypeControlStyle.DROPDOWN_MENU
                },
                navigationControl: true,
                scrollwheel: true,
                streetViewControl: true
            }

        },

        marker:{

            values: base_markers,

            options:{

                draggable: false

            },

            events:{

                click: function(marker, event, context) {

                    var map = $(this).gmap3("get"),

                    infowindow = $(this).gmap3({get:{name:"infowindow"}});

                    if (infowindow) {

                        infowindow.open(map, marker);
                        infowindow.setContent(context.data);

                    }else {

                        $(this).gmap3({

                            infowindow:{

                                anchor:marker,
                                options:{content: context.data}

                            }

                        });

                    }

                }

            }

        }

    });

以下是我在地图下显示的结果:

    <ul>
<li class="listing first">
                                       <div class="rphoto"><a href="#" style="background-image:url('/img/realestate/test_estate.jpg');"></a></div>
                                       <div class="details">
                                         <strong>1. <a href="#">Charming Payette Lake Cabin with private dock & beach</a></strong>
                                         <span>Type: Condo | Built: 1995 | Status: Backup or Contingent</span>
                                         <div class="info">This charming cabin is located on Payette Lake with private dock and beach. It offers 2 Bedroom and 1 Bath. Sleeps 8 with 2 Doubles, 1 bunk and 1 queen hideabed...<nav>Mill Valley, CA | Price: $520,000 | <a href="#">View Details &raquo;</a></nav></div>
                                         <ol>
                                           <li>6<br>Bed</li>
                                           <li>3.0<br>Bath</li>
                                           <li class="last">5,600<br>Sqft</li>
                                         </ol>
                                       </div>
                                      </li>
<li class="listing last">
                                       <div class="rphoto"><a href="#" style="background-image:url('/img/realestate/default_estate.jpg');"></a></div>
                                       <div class="details">
                                         <strong>2. <a href="#">Single-level mountain-view home in central Laveen</a></strong>
                                         <span>Type: House | Built: 2003 | Status: Active</span>
                                         <div class="info">With 3,200 square feet of living area and located just one lot back from the ocean, makes childhood dreams of fantastic sandcastles come true - and you can be one of the...<nav>Laveen, CA | Price: $124,563 | <a href="#">View Details &raquo;</a></nav></div>
                                         <ol>
                                           <li>3<br>Bed</li>
                                           <li>2.5<br>Bath</li>
                                           <li class="last">2,500<br>Sqft</li>
                                         </ol>
                                       </div>
                                      </li>
</ul>

同样,在搜索结果中,如果他们单击其中一个结果的链接,那么它将使地图居中于该标记所在的位置,因此,例如,第二个结果将居中于地图上的第二个标记,然后信息窗口将自动显示。如何使用jQueryGMAP3代码实现这一点?下面是我指的一个例子:

http://koti.mbnet.fi/ojalesa/boundsbox/makemarker_sidebar_plain.htm

共有1个答案

全兴运
2023-03-14

好吧,我能想出来。以下是我添加的jquery代码:

    $(".propertyclick").click(function() {

        //We first scroll to top of page
        $("html,body").animate({ scrollTop: 0 },"fast");

        //We then get the current id of the marker being clicked
        var id = $(this).attr('data-marker');

        //We now get the marker in the map that they want to see
        var marker = $("#estate_searchmap").gmap3({ get: { id: id } });

        //We now simulate that marker being clicked via the map
        google.maps.event.trigger(marker,'click');

        return false;

    });

在列表结果中,我添加了一个链接,让他们单击以触发此:

<a href="" class="propertyclick" data-marker="property1"></a>

数据标记保存我在原始代码base_markers中为json值中的每个标记分配的id。现在,您将在每个标记中看到一个新值,例如id:“property1”,然后下一个将是id:“property2”等等。这就是我在上面的click函数中引用的方法,以知道调用哪个标记。

 类似资料:
  • 问题内容: 我有一个链接而不是“提交”按钮: 单击后可以提交表单吗? 问题答案: 最好的方式 最好的方法是插入适当的输入标签: 最好的JS方式 由封闭后的JavaScript代码事件(只选择了向后兼容性如果你还没有这样做: 简单而不可取的方式(以前的答案) 在链接和表单中添加一个属性: 所有方式 无论选择哪种方式,最终都可以调用(标记的DOM对象在哪里)。 您还必须绑定这样的事件处理程序,该事件处

  • #include <hiredis/hiredis.h> int main(void) { char a[1026] = {0}; redisContext *c = NULL; void *reply = NULL; memset(a, 'a', (sizeof(a) - 1)); c = redisConnec

  • 我在试着登录Facebook。成功登录后,我会弹出一个浏览器: 如何使用webdriver单击“允许”并继续前进?

  • 问题内容: 我希望此链接具有一个JavaScript对话框,询问用户“ 您确定吗? 是/否 ”。 如果用户单击“是”,则链接应该加载,如果“否”,则什么也不会发生。 我知道如何通过运行返回或的函数以表格形式进行操作。但是,我该如何使用链接呢? 问题答案: 内联事件处理程序 以最简单的方式,您可以在内联处理程序中使用该函数。 高级事件处理 但是通常情况下,您希望将HTML和Javascript分开,

  • 你好,这就是我想做的。我想在用户单击链接后显示警报框。我的链接指向另一个php页面,但它将再次返回到找到链接的页面。我怎样才能做到这一点?有人能告诉我怎么做吗? 这是我尝试过的,但不起作用。

  • 问题内容: 我有个问题。我不知道如何通过单击JButton显示图像。 我有一个可以显示和隐藏图像的类: 我正在使用MVC,所以我想在我的控制器地图中使用JButton的代码,但是我不知道该怎么做。 单击按钮保持器时需要显示图像。 问题答案: 就像别人说的一样,总是用来显示图像。这样,很容易在需要时添加/删除它们,而不是绘画。此外,在您的代码中您正在重写,因为如果所讨论的组件具有一个,我们希望重写各