javascript - Google map - 具有可点击标记的标记聚类

标签 javascript google-maps google-maps-api-3

我对谷歌地图的使用有点困惑。我不是编码初学者,但 javascript 不是我的最佳实践。

我使用 Google map 标记簇来标记某个位置。我从数据库中获取坐标。但我想显示(可点击的)描述(工具提示)。我不知道如何在我的代码中实现这一点。

我的代码如下:

function initMap(position) {
            var map = new google.maps.Map(document.getElementById('map'), {
                zoom: 10,
                center: {lat: 51.1427552, lng: 8.2123375}
            });
            if (navigator.geolocation) {
                navigator.geolocation.getCurrentPosition(function (position) {
                    var pos = {
                        lat: position.coords.latitude,
                        lng: position.coords.longitude
                    };

                    map.setCenter(pos);
                }, function () {
                    handleLocationError(true, infoWindow, map.getCenter());
                });
            } 
            // Create an array of alphabetical characters used to label the markers.
            var labels = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';

            // Add some markers to the map.
            // Note: The code uses the JavaScript Array.prototype.map() method to
            // create an array of markers based on a given "locations" array.
            // The map() method here has nothing to do with the Google Maps API.
            var markers = locations.map(function (location, i) {
                console.log(location[2]);
                return new google.maps.Marker({
                    position: location,
                    label: labels[i % labels.length], 
                });

            }); 

            console.log(markers);

            // Add a marker clusterer to manage the markers.
            var markerCluster = new MarkerClusterer(map, markers,
                    {imagePath: 'https://developers.google.com/maps/documentation/javascript/examples/markerclusterer/m'});
        }
        var locations = [{"lat":52.2885818,"lng":7.4184098,"title":"test"},{"lat":52.2756548,"lng":7.4223696,"title":"test"}]  

我希望您能向我展示如何集成这些工具提示。

我发现了这样的代码:

google.maps.event.addListener(markers,'click',function() {
var infowindow = new google.maps.InfoWindow({
  content:"Hello World!"
});

infowindow.open( map ,标记); });

但我不知道如何实现。帮助会很好。非常感谢!

最佳答案

你好,yfain 试试这个代码!

<script>
var AllMarkers = [];
google.maps.event.addDomListener(window, 'load', initMap);
function initMap(position) {
        var map = new google.maps.Map(document.getElementById('map'), {
            zoom: 10,
            center: {lat: 51.1427552, lng: 8.2123375}
        });
        if (navigator.geolocation) {
            navigator.geolocation.getCurrentPosition(function (position) {
                var pos = {
                    lat: position.coords.latitude,
                    lng: position.coords.longitude
                };

                map.setCenter(pos);
            }, function () {
                handleLocationError(true, infoWindow, map.getCenter());
            });
        } 
        // Create an array of alphabetical characters used to label the markers.
        var labels = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';

        // Add some markers to the map.
        // Note: The code uses the JavaScript Array.prototype.map() method to
        // create an array of markers based on a given "locations" array.
    // The map() method here has nothing to do with the Google Maps API.

        //var markers = locations.map(function (location, i) {
        //   // console.log(location[2]);
        //    return new google.maps.Marker({
        //        position: location,
        //        icon:'https://developers.google.com/maps/documentation/javascript/examples/markerclusterer/m',
        //        label: labels[i % labels.length], 
        //    });

        //}); 
        $.each(locations, function (i, location) {
            debugger;
                console.log(location.lat+', '+location.lng);
var points = {
                lat: location.lat,
                lng: location.lng
            };
            map.setCenter(points);
            var myLatlng = new google.maps.LatLng(location.lat, location.lng);
            var marker = new google.maps.Marker({
                position: myLatlng,
               map: map,
                title: labels,
                icon: 'http://maps.google.com/mapfiles/ms/icons/blue.png'
            });
            AllMarkers.push(marker)
            marker.info = new google.maps.InfoWindow({
                content: location.title
               // content: labels[i % labels.length]
        });
        google.maps.event.addListener(marker, 'click', function (e) {
         marker.info.open(map, marker);
     });
        });

        //console.log(markers);

        // Add a marker clusterer to manage the markers.
    //    var markerCluster = new MarkerClusterer(map, markers,
    //            {imagePath: 'https://developers.google.com/maps/documentation/javascript/examples/markerclusterer/m'});
    }
var locations = [{ "lat": 30.740762, "lng": 76.783013, "title": "Loc-1" }, { "lat": 30.733532, "lng": 76.77134, "title": "Loc-2" }]

</script>

关于javascript - Google map - 具有可点击标记的标记聚类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44508970/

相关文章:

html - 谷歌地图 JavaScript 错误

javascript - 链接div到firefox中输入文本

javascript - Google Maps API,如何在整个城市或可见的整个 map 部分获取服务(文本搜索)

javascript - ES6 中分号的使用

javascript - 如何正确地将 ES6 模块函数导出为库以在 Node 应用程序中使用?

ios - 适用于 iOS 的 Google map SDK - 集群管理器在标记点按时不显示标记标题

javascript - 使用 Google Maps API 得到的结果超过 20 条?

javascript - 在将 fitBounds() 与 Google Maps API V3 结合使用后使用 setZoom()

javascript - 在 jQuery 中添加或删除类

javascript - 在 AngularJS 中选择选项返回对象而不是值