不要在google-maps上加载标记

时间:2015-08-19 20:25:41

标签: jquery google-maps google-maps-api-3

我知道他正在正确调用该功能,他们把标记没有出现在地图上

<script>
    function newMarker(lat, long, id, marker){
            marker = new google.maps.Marker({
                map: map,
                position: new google.maps.LatLng(lat, long)
            });

            alert(id + ' ' + lat + ' ' + long);
            google.maps.event.addListener(marker, 'click', (function(marker, id) {
                return function() {
                    infowindow.setContent('sender');
                    infowindow.open(map, marker);
                }
            })(marker, id));
        }

        $(function() {
            $("#ads tbody tr").each(function(){
                tr=$(this);
                departureLatitude       = tr.children('td:eq(3)').html();
                departureLongitude      = tr.children('td:eq(4)').html();
                destinationLatitude     = tr.children('td:eq(5)').html();
                destinationLongitude    = tr.children('td:eq(6)').html();

                id = tr.children('td:eq(0)').html();

                var marker;
                newMarker(departureLatitude, departureLongitude, id, marker);
                markers.push(marker);
            });

            markerCluster = new MarkerClusterer(map, markers);
        });
</script>

然而,为了正确加载在字段中输入的地址标记

<script>
function loadMap(campo, endereco, marker) {
        geocoder.geocode({'address': endereco + ', Brasil', 'region': 'BR'}, function (results, status) {
            if (status == google.maps.GeocoderStatus.OK) {
                if (results[0]) {
                    var lat = results[0].geometry.location.lat();
                    var long = results[0].geometry.location.lng();

                    campo.val(results[0].formatted_address);
                    $('#bundle_ad_' + name_campo + 'Latitude').val(lat);
                    $('#bundle_ad_' + name_campo + 'Longitude').val(long);

                    var location = new google.maps.LatLng(lat, long);
                    marker = new google.maps.Marker({
                        map: map,
                        title: 'Seu Destino!'
                        //draggable: true
                    });
                    marker.setPosition(location);
                    map.setCenter(location);
                    map.setZoom(15);
                }
            }
        });
    }

$("#bundle_ad_destination").blur(function () {
        if ($(this).val() != "") {
            loadMap($(this), $(this).val(), marker_destino);
        }
    });
</script>

我在代码的这一部分做了enstancia地图

<script>
function showGoogleMaps(){
    var mapConfig = {
        zoom: 15, // initialize zoom level - the max value is 21
        center: new google.maps.LatLng(-7.132916, -34.82769),
        streetViewControl: false, // hide the yellow Street View pegman
        scaleControl: true, // allow users to zoom the Google Map
        mapTypeId: google.maps.MapTypeId.ROADMAP
    };

    map = new google.maps.Map(document.getElementById('googlemaps'), mapConfig);

    setStyleMap();

    getPosicion();
}

google.maps.event.addDomListener(window, 'load', showGoogleMaps);
</script>

警报放在那里,看看他们是否会携带信息错误或空洞但警报出现,有人帮助我?

1 个答案:

答案 0 :(得分:1)

以下是工作代码:codepen.io

  1. 在包含lng和lat的每个单元格的末尾有一个额外的引号(“),所以它是:

    -22.0040705"

  2. 而不是

    -22.0040705
    

    这导致google.maps.LatLng中的NaN,这意味着标记不会显示

    1. 你有一个窗口加载的监听器(可能是从gmaps示例中获取的),但是这个事件在文件准备就绪后触发(由jquery处理),因此newMarker()中的map未定义(下次尝试使用console.log(map)进行调试。为了解决这个问题,我在文档就绪监听器中调用了showGoogleMaps()(第491行)

    2. 您正在使用类似

      的语句包装each()函数

      $(函数(){})

    3. 哪个不对(第509行)。

      所以,一旦我完成了所有这些步骤,我就会看到地图上的标记。

      希望有所帮助。