javascript - 如何通过点击谷歌地图标记来定位 map 外的元素

标签 javascript google-maps google-maps-api-3 laravel-5

我有一组链接到谷歌地图上标记的文章。我正在使用 Laravel 5 和谷歌地图 API。当我点击一篇文章时,它的信息 div 会展开,谷歌地图信息窗口也会展开。

我想要做的是单击谷歌地图标记并展开文章信息 div。即我希望它能够双向工作。

文章是动态创建的。

这是我的谷歌地图代码的相关部分:

    var barID = [
    @foreach($articles as $article)
    {{$article->id}},
    @endforeach
    ];
for (i = 0; i < locations.length; i++) {
    infoWindowContent[i] = getInfoWindowDetails(locations[i]);
    var location = new google.maps.LatLng(locations[i][0], locations[i][1]);
    var marker = new google.maps.Marker({
        position: location,
        map: map,
        id: barID[i],
        icon: 'images/happymarker.png'
    });
  var infoBubble = new InfoBubble({
      map: map, etc..
    });
      google.maps.event.addListener(marker, 'click', (function(marker, i) {
        return function() {
          infoBubble.setContent(infoWindowContent[i]);
          infoBubble.open(map, marker);
          map.panTo(marker.getPosition());
          map.setZoom(17);
        }
      })(marker, i));
      markers.push(marker);
}
// SHOW MORE INFO BUTTON TRIGGERS INFOWINDOW/MARKER
    function myClick(id){
        google.maps.event.trigger(markers[id], 'click');
    } 

这是我的尝试 - 但它不起作用。

marker.addListener('click', function(theID) {

$(".descriptionTextContainer" + theID).show();  

      });

标记/文章( map 容器之外)。我已经为所有文章添加了一个 id,因此它将是 class="descriptionTextContainer 24"- 即所有不同的文本容器在其类中都将具有唯一的 id。

 <article class="barContainer mix category-<?php echo $article->id; ?>" data-rating="<?php echo $article->rating; ?>" data-distance="<?php echo $article->distance; ?>">
 $something = $articles->lists('id'); 
                    $artID = $article->id;  
                    $key= $something->search($artID); ?>   

// THIS IS THE PLACE WHERE I CLICK TO SHOW THE 'descriptionTextContainer'               
  <div class="resultsTitle showMoreDetails" onclick="myClick(<?php echo $key; ?>);">
    <div class="barTitleContainer"><h2>{{$article->title}}</h2></div>
  </div>           
  <div class="descriptionTextContainer <?php echo $key; ?>">            
// THIS IS HIDDEN TILL THE MARKER OR THE 'ShowMoreDetails' is clicked                  
  </div>
</article>

这是the site因为它正在工作。

最佳答案

您的标记已绑定(bind):您只需在 id 上添加一行即可打开 div,因为您已将文章 ID 存储在marker.id 中

google.maps.event.addListener(marker, 'click', (function(marker, i) {
    return function() {
      infoBubble.setContent(infoWindowContent[i]);
      infoBubble.open(map, marker);
      map.panTo(marker.getPosition());
      map.setZoom(17);
      // Add this line
      $(".descriptionTextContainer" + marker.id).show(); 
    }
  })(marker, i));

关于javascript - 如何通过点击谷歌地图标记来定位 map 外的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45287384/

相关文章:

javascript - 如何保存拖动标记的新定位?

PHP/JS : Echoing several variables without losing their value

javascript - 谷歌地图 API V3 fitBounds() 不工作

javascript - 围绕 DIV 中心旋转的元素 - 只有添加到页面的最后一个元素响应 onClick 事件

javascript - 使用angularJS设置HTML5日期输入字段的默认值

android - 使用计时器从 JSON 添加多个标记

javascript - 如何获取map.getBounds()作为4个 float 的列表?

ios - 在 iOS 模拟器上显示 GMSMarkers 时发生 GMSThreadException

javascript - 如何更改箭头覆盖的箭头长度

javascript - 地理定位找到我的位置不起作用