【问题标题】:Add url to multiple markers to google map in wordpress在wordpress中将URL添加到多个标记到谷歌地图
【发布时间】:2015-03-08 17:02:40
【问题描述】:

我想向 wordpress 添加一个带有多个标记的谷歌地图,并且我希望每个标记都成为一个 url 的链接。 我对java和php不太了解,所以我做了很多研究,唯一有效的方法是:

  <script type="text/javascript">

var locations = [
      ['Rome', 41.9100711,12.5359979, 4],
      ['Coogee Beach', -33.923036, 151.259052, 5],
      ['Cronulla Beach', -34.028249, 151.157507, 3],
      ['Manly Beach', -33.80010128657071, 151.28747820854187, 2],
      ['Maroubra Beach', -33.950198, 151.259302, 1]
];

    var map = new google.maps.Map(document.getElementById('map'), {
      zoom: 4,
      center: new google.maps.LatLng(41.9100711,12.5359979),
      mapTypeId: google.maps.MapTypeId.ROADMAP
    });

    var infowindow = new google.maps.InfoWindow();

    var marker, i;

    for (i = 0; i < locations.length; i++) {  
      marker = new google.maps.Marker({
        position: new google.maps.LatLng(locations[i][1], locations[i][2]),
        map: map,
    clickable: true,

      });

      google.maps.event.addListener(marker, 'click', (function(marker, i) {
        return function() {
          infowindow.setContent(locations[i][0]);
          infowindow.open(map, marker);
        }
      })(marker, i));
    }
  </script>

但我不知道如何为每个位置添加一个 url。有人能帮我吗?谢谢。

【问题讨论】:

    标签: javascript php wordpress google-maps google-maps-api-3


    【解决方案1】:

    喜欢@incredible 的答案, 我会提供一个小代码sn-p,可能对你有点帮助..

    var locations = [
        ['Rome', 41.9100711, 12.5359979, 4,"http://google.co.id/"],
        ['Coogee Beach', -33.923036, 151.259052, 5,"http://google.co.id/"],
        ['Cronulla Beach', -34.028249, 151.157507, 3,"http://google.co.id/"],
        ['Manly Beach', -33.80010128657071, 151.28747820854187, 2,"http://google.co.id/"],
        ['Maroubra Beach', -33.950198, 151.259302, 1,"http://google.co.id/"]
    ];
    
    var map = new google.maps.Map(document.getElementById('map'), {
        zoom: 4,
        center: new google.maps.LatLng(41.9100711, 12.5359979),
        mapTypeId: google.maps.MapTypeId.ROADMAP
    });
    
    var infowindow = new google.maps.InfoWindow();
    
    var marker, i;
    
    for (i = 0; i < locations.length; i++) {
        marker = new google.maps.Marker({
            position: new google.maps.LatLng(locations[i][1], locations[i][2]),
            map: map,
            clickable: true,
            url:locations[i][4]
        });
    
        google.maps.event.addListener(marker, 'click', (function (marker, i) {
            return function () {
                infowindow.setContent(locations[i][0]);
                infowindow.open(map, marker);
                window.location.href = marker.url;
            }
        })(marker, i));
    }
    <script src="http://maps.googleapis.com/maps/api/js?libraries=places&sensor=false"></script>
    <div id="map" style="width:600px; height:450px"></div>

    【讨论】:

      【解决方案2】:

      看看我在地点 ROME 做了什么,如果有效,休息时也这样做。

        <script type="text/javascript">
      
      var locations = [
            ["<a href='#'>Rome</a>", 41.9100711,12.5359979, 4],
            ['Coogee Beach', -33.923036, 151.259052, 5],
            ['Cronulla Beach', -34.028249, 151.157507, 3],
            ['Manly Beach', -33.80010128657071, 151.28747820854187, 2],
            ['Maroubra Beach', -33.950198, 151.259302, 1]
      ];
      
          var map = new google.maps.Map(document.getElementById('map'), {
            zoom: 4,
            center: new google.maps.LatLng(41.9100711,12.5359979),
            mapTypeId: google.maps.MapTypeId.ROADMAP
          });
      
          var infowindow = new google.maps.InfoWindow();
      
          var marker, i;
      
          for (i = 0; i < locations.length; i++) {  
            marker = new google.maps.Marker({
              position: new google.maps.LatLng(locations[i][1], locations[i][2]),
              map: map,
          clickable: true,
      
            });
      
            google.maps.event.addListener(marker, 'click', (function(marker, i) {
              return function() {
                infowindow.setContent(locations[i][0]);
                infowindow.open(map, marker);
              }
            })(marker, i));
          }
        </script>
      

      【讨论】:

      • 感谢您的回答,它在信息框中添加了一个链接(这样也很有用),但我希望标记本身成为一个链接......所以当我点击标记,它不会打开信息框,而是直接在 url 链接我。
      【解决方案3】:

      您可以将 url 作为第 4 个参数添加到您的位置数组。例如:

      var locations = [
            ['Rome', 41.9100711,12.5359979, 4, 'example.com'],
      ...
      ];
      

      当你创建 Marker 对象时,把它作为 url 参数。例如:

      marker = new google.maps.Marker({
              position: new google.maps.LatLng(locations[i][1], locations[i][2]),
              map: map,
              clickable: true,
              url: locations[i][4]});
      

      在事件监听器中:

      google.maps.event.addListener(marker, 'click', function() {
          window.location.href = this.url;
          ...
      });
      

      【讨论】:

      • 谢谢你的回答,但它不起作用,地图就消失了
      • 对不起,@giuliomaione。我只给出了部分代码。不是所有的解决方案:)
      猜你喜欢
      • 2020-06-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-11
      • 1970-01-01
      • 1970-01-01
      • 2014-12-08
      • 2015-09-12
      相关资源
      最近更新 更多