【问题标题】:How to handle markers exact present at the same location如何处理精确存在于同一位置的标记
【发布时间】:2015-08-06 17:17:14
【问题描述】:

我正在使用 google Maps 来显示我在 Database 中的数据。 我还需要显示可用的标记,我面临的问题是有时标记数据存在于相同的坐标处。

This 是我的小提琴

在这种情况下,我如何在点击时显示我的标记??

这是我的代码

var map;
var global_markers = [];
var markers = [
    [37.09024, -95.712891, 'trialhead0'],
    [37.09024, -95.712891, 'trialhead1'],
    [37.09024, -95.712892, 'trialhead2']
];
var infowindow = new google.maps.InfoWindow({});

function initialize() {
    geocoder = new google.maps.Geocoder();
    var latlng = new google.maps.LatLng(40.77627, -73.910965);
    var myOptions = {
        zoom: 1,
        center: latlng,
        mapTypeId: google.maps.MapTypeId.ROADMAP
    }
    map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
    addMarker();
    markerCluster = new MarkerClusterer(map, global_markers);
}

function addMarker() {
    for (var i = 0; i < markers.length; i++) {
        // obtain the attribues of each marker
        var lat = parseFloat(markers[i][0]);
        var lng = parseFloat(markers[i][1]);
        var trailhead_name = markers[i][2];
        var myLatlng = new google.maps.LatLng(lat, lng);
        var contentString = "<html><body><div><p><h2>" + trailhead_name + "</h2></p></div></body></html>";
        var marker = new google.maps.Marker({
            position: myLatlng,
            map: map,
            title: "Coordinates: " + lat + " , " + lng + " | Trailhead name: " + trailhead_name
        });
        marker['infowindow'] = contentString;
        global_markers[i] = marker;
        global_markers.push(marker);
        google.maps.event.addListener(global_markers[i], 'click', function() {
            infowindow.setContent(this['infowindow']);
            infowindow.open(map, this);
        });
    }
}
var markerCluster;
window.onload = initialize;

【问题讨论】:

    标签: google-maps


    【解决方案1】:

    在这种情况下,您需要稍微移动每个标记,以便它们不会相互重叠,并且 for 表示有更多标记分组,您可以使用标记簇 你可以在 StackOverflow 中看到很多例子

    Adding simple marker clusterer to google map 你可以在里面看到一个有用的jsfiddl

    【讨论】:

    • 谢谢,如果标记坐标在同一坐标处,jsfiddle.net/rD8U6/602,则不显示标记
    • 是的,jsfiddle 用于展示如何显示标记集群。对于标记 yuo 可以设置在 lat、lng 上有微小差异的位置,例如为同一原始位置的每个标记添加 + 0.00001
    • 我正在关注这个链接以编程方式实现stackoverflow.com/questions/20490654/…,但我不知道这行,var allMarkers = namespace.mapParams.mapMarkersArray; var finalLatLng = latlng; var pos = existingMarker.getPosition();答案中使用的。
    • 感谢您的帮助,我尝试了您的小提琴,当我点击标记图标 (2) 时,它没有显示任何已知的标记。
    • 您必须放大并在一定的放大倍数下看到两个标记
    猜你喜欢
    • 2015-08-02
    • 2018-04-06
    • 1970-01-01
    • 2018-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-02
    • 1970-01-01
    • 2013-02-05
    相关资源
    最近更新 更多