Если вы разрешаете пользователям добавлять маркеры, я бы сказал, что вы затем делаете ajax-вызов на вашу страницу PHP, передавая идентификатор пользователя, широту и долготу (и все, что потребуется вашей БД).
Чтобы пользователи не могли добавлять более 1 маркера, я думаю, вы были на правильном пути. Возможно, я бы сделал это так.
var intMarkers = 0; // make it global
$('#map_canvas').gmap().bind('init', function(event, map) {
$(map).click( function(event) {
intMarkers++;
if (intMarkers === 0) {
$('#map_canvas').gmap('addMarker', {'position': event.latLng, 'draggable': true, 'bounds': false}, function(map, marker) {
$('#dialog').append('<form id="dialog'+marker.__gm_id+'" method="get" action="/" style="display:none;"><p><label for="country">Country</label><input id="country'+marker.__gm_id+'" class="txt" name="country" value=""/></p><p><label for="state">State</label><input id="state'+marker.__gm_id+'" class="txt" name="state" value=""/></p><p><label for="address">Address</label><input id="address'+marker.__gm_id+'" class="txt" name="address" value=""/></p><p><label for="comment">Comment</label><textarea id="comment" class="txt" name="comment" cols="40" rows="5"></textarea></p></form>');
findLocation(marker.getPosition(), marker);
}).dragend( function(event) {
var self = this;
findLocation(event.latLng, this);
}).click( function() {
openDialog(this);
});
// stick in an Ajax call here too
}
});
});
Кроме того, в примере кода используется устаревший API Карт Google 2, я рекомендую использовать вместо него API 3.