Google maps api 3 限制gmap v3上添加的标记数

Google maps api 3 限制gmap v3上添加的标记数,google-maps-api-3,jquery-gmap3,Google Maps Api 3,Jquery Gmap3,使用google map v3和一个小型jquery插件,我为用户创建了一个页面,在google map上添加点/标记。 到目前为止,这一切都非常有效。 现在,我需要改进此功能,并允许用户在地图上添加多个标记/点 每个用户只能添加特定数量的点数。 此数字对于每个用户都是唯一的-因此它必须是可变的。 到目前为止,我使用的js代码是这样的。 $("#my_map").gmap3({ map:{ options:{ center:[start_lat,

使用google map v3和一个小型jquery插件,我为用户创建了一个页面,在google map上添加点/标记。
到目前为止,这一切都非常有效。
现在,我需要改进此功能,并允许用户在地图上添加多个标记/点
每个用户只能添加特定数量的点数。
此数字对于每个用户都是唯一的-因此它必须是可变的。

到目前为止,我使用的js代码是这样的。

$("#my_map").gmap3({
    map:{
        options:{
            center:[start_lat, start_long],
            zoom: start_zoom,
            mapTypeId: google.maps.MapTypeId.ROADMAP,
            mapTypeControl: true,
            mapTypeControlOptions:  {   style: google.maps.MapTypeControlStyle.DROPDOWN_MENU    },
            navigationControl: true,
            scrollwheel: true,
            streetViewControl: false
        },
        events:{                    
            click: function(map, event) // clicking on map adds a new marker
            {
                var lat = event.latLng.lat(), 
                    lng = event.latLng.lng();
                // save to form
                $("#map_lat").val(lat);
                $("#map_long").val(lng);
                $("#map_zoom").val( map.getZoom() );

                $(this).gmap3({
                    clear: { id: ["newTag"] }, // remove old/new tags (based on marker id value)
                    marker: { id: 'newTag', latLng: event.latLng } // add new marker on map
                });
            } // end click
        } // end event
    } // end map
});

map = $("#my_map").gmap3('get');
google.maps.event.trigger(map, 'resize');
start\u lat、start\u long、start\u zoom是传递到函数中的参数。
map\u lat、map\u long、map\u zoom是页面形式的ID-单击map填充这些字段。

现在,假设我只允许添加2个标记。
我可以在要填充的表单中生成适当的唯一ID。
我可以在函数中传递另一个变量以了解标记的限制。
但是如何修改单击事件以限制它们?

我希望这是有意义的。


编辑:我以一种不优雅的方式完成了我想做的事情。我想知道有没有更优雅的

// assuming var maxItems=2 (argument in function
                for (var i=0; i<=maxItems; i++)
                {
                    if ( $("#map_lat"+i).val()=='' || $("#map_long"+i).val()=='' || $("#map_zoom"+i).val()==''      )
                    {
                        // populate form fields
                        $("#map_lat"+i).val(lat);
                        $("#map_long"+i).val(lng);
                        $("#map_zoom"+i).val( map.getZoom() );

                        $(this).gmap3({
                            clear: { id: ["newTag"+i] }, // remove old/new tags (based on marker id value)
                            marker: { id: 'newTag'+i, latLng: event.latLng } // add new marker on map
                        }); 

                        break;
                    }


}
//假设var maxItems=2(函数中的参数

对于(var i=0;i,您可以通过以下方式简单地创建标记,并为用户管理单独的数组

var markers = new Object();
function click_event(user_id)
{ 
    var marker = new google.maps.Marker({
      position:mycenter,
      title:infoName,
      id: count++
      // animation:google.maps.Animation.BOUNCE
      });

    markers[user_id].push(marker);

    display_markers(user_id, limit);
}

function display_markers(user_id, limit)
{
    remove_markers(); //remove all previous markers from map
    for( var i = 0; i < limit ; i++ )
    {
        markers[user_id][i].setMap(map); //will set limited markers for particular user
    }
}
var markers=新对象();
函数单击事件(用户id)
{ 
var marker=new google.maps.marker({
职位:迈森特,
标题:infoName,
id:计数++
//动画:google.maps.animation.BOUNCE
});
标记[用户id]。推送(标记);
显示标记(用户id、限制);
}
功能显示标记(用户id、限制)
{
remove_markers();//从地图中删除所有以前的标记
对于(变量i=0;i
您想如何设置该限制?它是否存储在某个地方?数据库?Cookie?会话?为每个用户创建一个标记数组,并仅显示固定数量的标记。@MrUpsidown。它将是我的function@gaurravv5.标记管理不是很流利。我用基本技能做到了我想做的。看看我的编辑。我不知道ch获取您试图对
for
循环执行的操作。我会让全局变量保存允许的最大标记和计数器。每次用户创建标记时,递增计数器。在单击事件中,检查计数器是否不大于允许的最大值。为什么要使用用户id?这是javascript…客户端。可以选择“是”e没有任何用户id,只是为了便于理解。此代码似乎在纯google map上工作。我不知道如何将其实现到我的代码中(我使用gmap jquery插件)。为此,您必须使用api键,map只是指您正在使用的map变量,rest是纯javascript。无论如何,您都需要api键。