我正在尝试使用ginput命令在以下地图上获取位置。但是问题是我想在单击该点之前先查看该点的位置。
有可能吗?单击N个点后,我可以看到位置,但是不能再单击它们。我应该先看到该位置,然后再单击它。
谢谢!
这里是代码:
clc
clear
close all
geoaxes('Units','normalized');
N=5;
set (gcf, 'WindowButtonMotionFcn', @mouseMove);
for i=1:N
[lat,lon]=ginput(1)
hold on
geolimits('manual')
geoscatter(lat,lon,'filled','b')
end
set (gcf, 'WindowButtonMotionFcn', @mouseMove);
function mouseMove (object, eventdata)
C = get (gcf, 'CurrentPoint');
title(gca, ['(X,Y) = (', num2str(C(1,1)), ', ',num2str(C(1,2)), ')']);
end
如果您有映射工具箱,您可以使用gcpmap
简化此操作。
主要问题只是在回调函数中需要drawnow
。然后,我用waitforbuttonpress
和CurrentPoint
代替了ginput
来获得点击的位置。
h = geoaxes('Units','normalized');
geolimits('manual')
set (gcf, 'WindowButtonMotionFcn', @(x,y) mouseMove(x,y,h));
hold on
N=5;
for i=1:N
waitforbuttonpress;
pt = h.CurrentPoint;
lat = pt(1,1);
lon = pt(1,2);
geoscatter(lat,lon,'filled','b')
end
hold off
function mouseMove (~, ~, handle)
C = handle.CurrentPoint;
title(gca, ['(X,Y) = (', num2str(C(1,1)), ', ',num2str(C(1,2)), ')']);
drawnow
end