Скажите мне, если у вас есть вопросы.

я есть база мест с адресами, и я хочу добавить маркеры на Google Maps.

Он показывает только маркер по умолчанию, похоже, что geocoder.geocode () ничего не делает. Например, я пытаюсь добавить маркер «Нью-Йорк Сити», но безуспешно.

<script>
    var geocoder;
    var map;
    var address = "new york city";
    geocoder = new google.maps.Geocoder();
    function initMap() {
        var uluru = { lat: -25.363, lng: 131.044 };
        var map = new google.maps.Map(document.getElementById('map'), {
            zoom: 4,
            center: uluru
        });
        var marker = new google.maps.Marker({
            position: uluru,
            map: map
        });
        codeAddress(address);

    }

    function codeAddress(address) {

        geocoder.geocode({ 'address': address }, function (results, status) {
            if (status == 'OK') {
                    var marker = new google.maps.Marker({
                    position: address,
                    map: map
                });
            } else {
                alert('Geocode was not successful for the following reason: ' + status);
            }
        });
    }


</script>
<script src="https://maps.googleapis.com/maps/api/js?key=XXX&callback=initMap"
    async defer></script>

Ответы на вопрос(1)

Решение Вопроса

по которой вы не получаете ожидаемый результат, заключается в неправильном размещении кодов в приведенном вами примере. Вы пытаетесь получить новый экземпляр геокодера API Карт Google до полной загрузки Карт Google. Следовательно, Google Maps API Geocoder не будет работать из-за этогоUncaught ReferenceError: Google не определен, Вы должны получить новый экземпляр Geocoder API Карт Google внутри функции initMap ().

Ты можешь проверитьКарты JavaScript API ГеокодированиеУзнать больше.

Вы также можете проверитьЛучшие практики при геокодировании адресов.

Также обратите внимание, что вы не должны указывать свой API_KEY при публикации вопросов, связанных с Google Maps APi.

Вот весь код:

<!DOCTYPE html>
<html>
  <head>
    <title>Geocoding service</title>
    <meta name="viewport" content="initial-scale=1.0, user-scalable=no">
    <meta charset="utf-8">
    <style>
      /* Always set the map height explicitly to define the size of the div
       * element that contains the map. */
      #map {
        height: 100%;
      }
      /* Optional: Makes the sample page fill the window. */
      html, body {
        height: 100%;
        margin: 0;
        padding: 0;
      }
    </style>
  </head>
  <body>
    <div id="map"></div>
    <script>
      var geocoder;
      var map;
      var address = "new york city";
      function initMap() {
        var map = new google.maps.Map(document.getElementById('map'), {
          zoom: 8,
          center: {lat: -34.397, lng: 150.644}
        });
        geocoder = new google.maps.Geocoder();
        codeAddress(geocoder, map);
      }

      function codeAddress(geocoder, map) {
        geocoder.geocode({'address': address}, function(results, status) {
          if (status === 'OK') {
            map.setCenter(results[0].geometry.location);
            var marker = new google.maps.Marker({
              map: map,
              position: results[0].geometry.location
            });
          } else {
            alert('Geocode was not successful for the following reason: ' + status);
          }
        });
      }
    </script>
    <script async defer
    src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&callback=initMap">
    </script>
  </body>
</html>

Live демоВот.

Надеюсь, это поможет!

 rafon26 окт. 2017 г., 00:26
Отлично - вы не против принять / отменить мой ответ? Спасибо
 rafon26 окт. 2017 г., 00:31
Я только что проголосовал за твой вопрос - это странно, потому что я думал, что тебе уже> 15 повторений :). Принятие этого не требует более высокой репутации :)
 Aviv Eyal26 окт. 2017 г., 00:29
Конечно, я уже проголосовал против, но это произойдет только тогда, когда у меня будет больше очков репутации.

Ваш ответ на вопрос