无需在MATLAB上使用ginput命令单击绘图即可获得位置

问题描述 投票:0回答:1

我正在尝试使用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
matlab plot mousemove ginput
1个回答
0
投票

如果您有映射工具箱,您可以使用gcpmap简化此操作。

主要问题只是在回调函数中需要drawnow。然后,我用waitforbuttonpressCurrentPoint代替了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
© www.soinside.com 2019 - 2024. All rights reserved.