Как показать несколько маркеров с одинаковыми широтами и долготами на картах Google - PullRequest
0 голосов
/ 28 ноября 2018

Если два местоположения имеют одинаковые значения широты и долготы, как получить информацию об обоих местоположениях для загрузки в одно и то же информационное окно без использования кластеров

Вот фрагмент кода, с которым я работал

 var l, m = new google.maps.InfoWindow;

          console.log(m);


          for (google.maps.event.addListener(k, "click", function() {
                  m.close()
              }), i = 0; i < f.length; i++) {
              var n = f[i],
                  o = g[i][0],
                  p = parseFloat(n[1]),
                  q = parseFloat(n[2]),
                  r = new google.maps.LatLng(p, q);


              l = new google.maps.Marker({
                  position: r,
                  map: k,
                  content: o
              }), l.addListener("click", function() { 

                  m.setContent(this.content), m.open(k, this)


              })
          }

Вот полный код https://codepen.io/T-SEA/pen/wQEqaa

Ответы [ 2 ]

0 голосов
/ 29 ноября 2018

Потратив 3 дня на это, я понял это

  var gmarkers = [];
              var l, m = new google.maps.InfoWindow;
              var j;
              for (google.maps.event.addListener(k, "click", function() {
                      m.close()
                  }), i = 0; i < f.length; i++) {
                  var n = f[i],
                      o = g[i][0],
                      p = parseFloat(n[1]),
                      q = parseFloat(n[2]),
                      r = new google.maps.LatLng(p, q);
                     // console.log(f);
                         for (j = 0; j < gmarkers.length; j++) {
                                if (r.equals(gmarkers[j].getPosition())) {
                                    gmarkers[j].IWcontent += "<hr>" + o;
                                    break;
                                }
                            }
                            if (i == 0 || j == gmarkers.length) {
                                var marker = new google.maps.Marker({
                                    position: r,
                                    map: k,
                                    IWcontent: o
                                });
                                google.maps.event.addListener(marker, 'click', function (evt) {
                                    m.setContent(this.IWcontent);
                                    m.open(k, this);
                                });
                                gmarkers.push(marker);
                            }

              }
0 голосов
/ 28 ноября 2018

Я рекомендую Маркерная кластеризация .https://developers.google.com/maps/documentation/javascript/marker-clustering

Используйте кластеризацию маркеров и установите событие клика (открыть InfoWindow) для кластеризации маркера.Проверь это!

...