Google Maps API не центрирует маркер - PullRequest
4 голосов
/ 14 сентября 2010

У меня есть Google Карты на веб-сайте, который устанавливает маркер на основе адреса.

Вот пример (щелкните вкладку местоположения): http://www.weddinghouse.com.au/wedding-directory/zoning-in-personal-training/

Как видите, на карте нет маркера. Но если вы прокрутите вверх, маркер сидит просто вне поля зрения.

Что-то не так с моим кодом? Странно то, что очень мало адресов на самом деле показывают правильно, а большинство - нет. Что-то не так с моим кодом или это Google?

Вот мой код JavaScript:

<script type="text/javascript">
$(document).ready(function(){
    load('Zoning In Personal Training', '27 Sitella Drive, berwick, VIC, 3806');
});
</script>

-

function load(title, address, type) {
    if (GBrowserIsCompatible()) {
        var map;
        var geocoder;

        map_id = document.getElementById("map");
        map = new GMap2(map_id);
        map.addControl(new GSmallMapControl());
        map.setCenter(new GLatLng(24, 0), 17);
        map.enableDoubleClickZoom();

        if (type == 'sat') {
            map.setMapType(G_SATELLITE_MAP);
            map.addControl(new GHierarchicalMapTypeControl());
        } else {
            map.setMapType(G_NORMAL_MAP);
        }

        geocoder = new GClientGeocoder();
        geocoder.getLocations(address, function (response) {
            map.clearOverlays();
            if (!response || response.Status.code != 200) {
                //map_id.innerHTML('Could not find address on Google Maps');
            } else {
                place = response.Placemark[0];
                point = new GLatLng(place.Point.coordinates[1], place.Point.coordinates[0]);

                map.setCenter(point, 17);

                // Create our "tiny" marker icon
                var icon = new GIcon();
                icon.image = "http://labs.google.com/ridefinder/images/mm_20_red.png";
                icon.shadow = "http://labs.google.com/ridefinder/images/mm_20_shadow.png";
                icon.iconSize = new GSize(12, 20);
                icon.shadowSize = new GSize(22, 20);
                icon.iconAnchor = new GPoint(6, 20);
                icon.infoWindowAnchor = new GPoint(5, 1);

                // Creates one of our tiny markers at the given point
                function createMarker(point, index) {
                  var marker = new GMarker(point, icon);
                  var myMarkerContent = "<div style=\"width:200px; overflow:auto;\"><strong>" + title + "</strong><br />" + address + "</div>";
                  map.addOverlay(marker);
                  marker.openInfoWindowHtml(myMarkerContent);
                  GEvent.addListener(marker,"click",function() {
                     marker.openInfoWindowHtml(myMarkerContent);
                   });
                }
                createMarker(point);
            }
        });
    }
}

Ответы [ 2 ]

5 голосов
/ 29 марта 2011

Если вы загрузите страницу в Google Maps и затем нажмете на функцию «ссылка», она даст вам код для встраивания сайта в виде iFrame вместо того, чтобы возиться с API - вы можете попробовать это?

Существует также ошибка с этим, что иногда маркер не центрируется, особенно на скрытом div.Мой лучший способ преодолеть это - поместить iFrame карты Google в отдельный файл (например, pages / map.html), а затем сделать его источником iFrame на своей странице.

Например, вместо этогоиз iFrame src = "maps.google.com/ и т. д.", например: src = "pages / map.html"

В любом случае, этому посту 6 месяцев, но лучше поздно, чем никогда!

0 голосов
/ 27 февраля 2017

Для меня проблема заключалась в том, что при загрузке карты размер фрейма был равен 0 (display: hidden). Я добавил задержку для загрузки карты после загрузки iframe. Это условие гонки может объяснить, почему некоторые адреса отображаются правильно.

Возможно, попробуйте это:

<script type="text/javascript">
  $(document).ready(function(){
    setTimeout("delayedLoad()",100);
  });
  function delayedLoad() {
    load('Zoning In Personal Training', '27 Sitella Drive, berwick, VIC, 3806');
  }
</script>

(спасибо https://groups.google.com/forum/#!topic/google-maps-api/nN0y2pSr2dQ)

...