Вы можете сделать что-то вроде
Manipulate[
Graphics[Line[{{0, 0}, p}],
PlotRange -> 2], {{p, {1, 1}}, {-1, -1}, {1, 1}, {0.4, 0.5}, Locator}]
, что ограничит локатор прямоугольной решеткой с горизонтальным интервалом 0,4 и вертикальным интервалом 0,5.Диапазон координат для локатора задается с помощью {xmin,ymin} = {-1,-1}
и {xmax, ymax} = {1,1}
.
Если вы хотите большей гибкости, например, вы хотите ограничить положение локатора непрямоугольной решеткой илидля более общего набора координат вы можете сделать что-то вроде
Manipulate[
With[{tab = RandomReal[{-1, 1}, {40, 2}]},
LocatorPane[Dynamic[p, (p = Nearest[tab, #][[1]]) &],
Graphics[{Line[{{0, 0}, Dynamic[p]}], {Red, Point /@ tab}}, PlotRange -> 2]]],
{{p, {1, 1}}, ControlType -> None}]