【问题标题】:google map marker icon not showing [closed]谷歌地图标记图标未显示[关闭]
【发布时间】:2020-05-29 15:36:29
【问题描述】:

我正在尝试实现一个谷歌地图,用户可以在其中找到搜索其选择的地方。地图显示得很好,搜索框也可以正常工作。唯一的问题是地图标记没有显示出来。我有以下脚本。似乎从未使用过 icon var,但我不知道为什么。谁能帮帮我?

<script>


    function initAutocomplete() {
        var map = new google.maps.Map(document.getElementById('map'), {
            center: { lat: 55.86515, lng: -4.25763 },
            zoom: 13,
            mapTypeId: 'roadmap'
        });


        var input = document.getElementById('pac-input');
        var searchBox = new google.maps.places.SearchBox(input);
        map.controls[google.maps.ControlPosition.TOP_LEFT].push(input);


        map.addListener('bounds_changed', function () {
            searchBox.setBounds(map.getBounds());
        });

        var markers = [];

        searchBox.addListener('places_changed', function () {
            var places = searchBox.getPlaces();

            if (places.length == 0) {
                return;
            }


            markers.forEach(function (marker) {
                marker.setMap(null);
            });
            markers = [];


            var bounds = new google.maps.LatLngBounds();
            places.forEach(function (place) {
                if (!place.geometry) {
                    console.log("Returned place contains no geometry");
                    return;
                }
                var icon = {
                    url: place.icon,
                    size: new google.maps.Size(71, 71),
                    origin: new google.maps.Point(0, 0),
                    anchor: new google.maps.Point(17, 34),
                    scaledSize: new google.maps.Size(25, 25)
                };

                markers.push(new google.maps.Marker({
                    map: map,
                    icon: "~/flag.jpg",
                    title: place.name,
                    position: place.geometry.location,
                    animation: google.maps.Animation.BOUNCE
                }));

                if (place.geometry.viewport) {

                    bounds.union(place.geometry.viewport);
                } else {
                    bounds.extend(place.geometry.location);
                }
            });
            map.fitBounds(bounds);
        });
    }

</script>

【问题讨论】:

  • 图标"~/flag.jpg" 不可用。使用完全限定的 URL。您可以通过注释掉该行 (icon: "~/flag.jpg",) (fiddle) 来验证代码是否正常运行

标签: c# asp.net google-maps google-maps-api-3


【解决方案1】:

您提供的图片路径可能无效,请尝试以下方法进行验证。 这对我有用

var markerImage = 'http://www.mapsmarker.com/wp-content/uploads/leaflet-maps-marker-icons/bar_coktail.png';

markers.push(new google.maps.Marker({
                map: map,
                icon: markerImage,
                title: place.name,
                position: place.geometry.location,
                animation: google.maps.Animation.BOUNCE
            }));

可以试试fiddle

【讨论】:

  • 这应该如何回答这个问题? OP 正在尝试使用本地文件作为图标。不是来自公共 URL。上面的代码显示http:// 而你的小提琴使用https:// 为什么会这样?您如何确保可以使用正确的协议加载公共 URL?
  • @MrUpsidown 太棒了!
  • @PashupatiKhanal 我不会编辑应该/已关闭的问题的答案,因为它首先不应该被回答。问题不清楚/无法复制=关闭=没有答案。同样,这并没有回答问题,而是提出了一个不是 OP 似乎试图实现的解决方案。我什至不明白为什么 OP 接受它...在告诉别人如何表现之前,您应该更熟悉这个社区。​​span>
猜你喜欢
  • 2014-05-17
  • 2013-07-05
  • 2013-04-20
  • 2021-07-07
  • 2015-01-25
  • 2020-06-08
  • 1970-01-01
相关资源
最近更新 更多