多个谷歌标记在同一个地方

时间:2010-12-25 23:12:59

标签: google-maps google-maps-markers

我正在尝试使用带有标记的谷歌地图。我在地图中放置标记没有任何问题,但是当我需要在同一个地方放置标记时,如何让标记像谷歌地球一样分裂?像这样:Example

谢谢!

2 个答案:

答案 0 :(得分:0)

我不明白你想要完成什么,但是......

您是否已经检查过标记聚类算法,例如this onegoogle semi-official

答案 1 :(得分:0)

//Here is my attempt... a Archimedes spiraling out of the markers:

// calc a spiraling out position based on marker count at that location
// this function is very tweeky
function spiral_coords(lat_long, i) {
    i = (i == 1)? 0: i+1;
    var r = i * 0.002;
    // .8 is a fudge number to adjust to real appearance on the map
    return [lat_long[0] + (r * .8 * Math.sin(.5 * (i + 2))), lat_long[1] + (r * Math.cos(.5 * (i + 2)))];
}

// this is from a fusion table query... but your source could be anything
// I take the coords and check against a hash count of them and calc out the spiral position
function data_handler(d) {
    var map = $("#map")[0];
    map.markers = [];

    var rows = d.rows;
    var fields = d.columns;
    var index = {};
    for (var i in fields) {
        index[fields[i]] = i;
    }
    var location_count = {};

    for (var i in rows) {
        var row = rows[i];
        var location = row[index["Location"]];
        var lat_long = location.split(" ");
        lat_long[0] = parseFloat(lat_long[0]);
        lat_long[1] = parseFloat(lat_long[1]);
                // here are the active ingredients
        if(!(location in location_count)) {
            location_count[location] = 0;
        }
        location_count[location]++;
        lat_long = spiral_coords(lat_long, location_count[location]);
        var marker = new google.maps.Marker({
            position: new google.maps.LatLng(lat_long[0], lat_long[1]),
            map: map.map
        });
    }
}