Размещение позиции маркера Google Maps с помощью переменной Javascript - PullRequest
0 голосов
/ 21 сентября 2018

Я пытаюсь поместить маркер внутри своей карты, и я передаю переменную javascript через другую страницу php, нажимая <ul>, когда копирую результат оповещения (пример: {lat: -25.4025, lng: -49.2643}) и поместить непосредственно в поле 'position', оно работает нормально, но когда я помещаю в него переменную, это не так.

PHP
$History_Assoc = mysqli_fetch_array($HistoryQuery);


      echo '<ul class="repoFolder" data-value=" {lat: '.(float)$History_Assoc['latitude'].', lng: '.(float)$History_Assoc['longitude'] .'}  ">';
      echo '<br>';



JAVASCRIPT
var folders = document.getElementsByClassName("repoFolder");
for (let i = 0; i < folders.length; i++) {
  folders[i].onclick = function() {rootFolder.call(this)}; // note that I am passing in the context to rootFolder. 
}

function rootFolder() {

  var variable =  this.getAttribute('data-value');

  alert(variable);

  var markersHistory = new google.maps.Marker({
    position: variable,
    map: map,
    icon: iconBlue2,
  });
}

1 Ответ

0 голосов
/ 22 сентября 2018

Похоже, что существует проблема с анализом JSON из атрибутов значения данных в вашей разметке.Есть несколько способов справиться с этим, но я думаю, что проще всего было бы встроить значения широты и долготы как два отдельных атрибута данных, а затем использовать объект Google Maps LatLng, чтобы указать координаты для вашего маркера.Таким образом, вы можете избежать различных ловушек JSON.Вот пример:

HTML:

<ul class="repoFolder" data-lat="-25.4025" data-lng="-49.2643">
    <li>Clicky</li>
</ul>

Javascript

function rootFolder() 
{
    var latitude =  this.getAttribute('data-lat');
    var longitude =  this.getAttribute('data-lng');

    var latLng = new google.maps.LatLng(latitude, longitude);

    var markersHistory = new google.maps.Marker({
        position: latLng,
        map: map
    });
}
...