图片缩略图

zoharby / plot_google_map

版本2.0.0.1 (12.6 KB) 琐Bar-Yehuda
使用静态谷歌地图API在当前图的背景上绘制谷歌地图。
4.9
153年评级

112下载

更新2020年4月22日

从GitHub

查看版本历史

在GitHub上查看许可证

编者按:此文件被选为MATLAB Central本周精选

plot_google_map。m使用谷歌Maps API在当前图的背景中绘制地图。
它假设当前图形的坐标在WGS84数据中,并使用转换代码将图像从谷歌使用的坐标系转换和投影到WGS84坐标。
地图的缩放级别将自动确定,以覆盖图形的整个区域。此外,它有选项自动刷新地图时,放大的数字,显示更多的细节。
以下代码生成截图:
你只需要运行一次,它会将API密钥存储在一个mat文件中,供将来使用
Lat = [48.8708 51.5188 41.9260 40.4312 52.523 37.982];
Lon = [2.4131 -0.1300 12.4951 -3.6788 13.415 23.715];
Plot (lon, lat, ')。r', 'MarkerSize', 20)
plot_google_map (MapScale, 1)

先决条件
由于谷歌地图计费模型的更改,您现在必须设置自己的谷歌地图API密钥并为您的项目启用计费。您将获得每月200美元的自动信用额度,这将足够用于100,000个静态地图调用而无需实际计费。

请注意,如果你想部署你的代码,这确实会带来一些挑战,因为你的API密钥需要与代码一起部署/作为一个mat文件,因此可能会暴露给用户。

已知问题:
1)保存带有图像/矩阵覆盖的地图(尤其是半透明的)有时会导致意想不到的结果(地图不显示等)。如果你遇到这样的问题,建议使用export_fig提交:
//www.tatmou.com/matlabcentral/fileexchange/23629-exportfig
最有效的组合似乎是:
集(gcf,渲染器,“zbuffer”)
export_fig(“out.jpg”)

引用作为

Zohar Bar-Yehuda(2021)。zoharby / plot_google_mapGitHub (https://github.com/zoharby/plot_google_map)。检索

意见及评分(274

d n

Di Ao

我们应该把下载的包放在哪里?Matlab工具箱?

Jj米贾泉米

gummiyummi

有没有绕过API密钥的方法?或者只能用API密钥绘制谷歌映射?

你好,我是一名海洋学家,我经常使用你的程序。我认为这是一个非常优秀的程序,功能非常广泛。但是,我需要一个选项来将地图集中在特定的盆地上,例如太平洋,所以在绘图时,地图的每一侧都没有图形。

比尔Kulp

Tongtong徐

nattapong ruenruedeepan

赛贝林

干得好!

王杰森

对自动驾驶模拟非常有用。

安德烈斯

你好。你知道这个代码可以用来做热图吗?我的意思是,对于每个节点,您不仅提供了坐标,而且还提供了一个额外的“权重”,以给出节点的颜色。

arci biyo

arci biyo

大家好,我在matlab命令窗口中得到了这个命令(如下)。我真的很需要这个函数。如何解决我的问题?如果它与API Key相关,如何将我的API或另一个API集成到matlab?

警告:无法下载地图表格谷歌服务器。
Matlab错误是:使用urlreadwrite错误(第98行)
下载URL错误。您的网络连接可能出现故障,或者您的代理设置配置不当。
http://maps.googleapis.com/maps/api/staticmap?center=0, 0变焦= 1规模= 2大小= 640 x640&maptype = roadmap&format = png&markers =传感器=备用钥匙= < AIzaSyDL-b5d_HX_sljOdujz0N0oy8FWUcA_8ic>

Ilya Shipachev

你好,
非常有用的脚本,非常适合我的目的。
我只有一个要求。我需要地图更新(回调@update_google_map)当轴限制更改。当前刷新只监听用户的缩放和平移动作。
我尝试在刷新部分的xlim和ylim上添加一个addlistener,但我只得到了绘图进程冻结。
知道吗?

非常感谢

约翰·麦克道尔

Naveed艾哈迈德

你好,
它在一定程度上对我有用。映射是由我生成的API Key加载的。然而,我得到以下警告,地图不显示,只有点被绘制。出于安全原因,API密钥是模糊的。

警告:无法下载地图表格谷歌服务器。
Matlab错误是:使用urlreadwrite错误(第98行)
下载URL错误。您的网络连接可能出现故障,或者您的代理设置配置不当。

可能原因:缺少写权限,没有网络连接,配额超过,或其他错误。
如果配额问题仍然存在,请考虑使用API密钥。

要调试,请尝试在浏览器中粘贴以下URL,这可能会导致更多信息错误:
http://maps.googleapis.com/maps/api/staticmap?center=0,0&zoom=1&scale=2&size=640x640&maptype=roadmap&format=png&markers=&sensor=false&key=AIzaSyBrkjekrjekljrlqk-rowqrljtzEk
在plot_google_map中(第451行)

当我检查链接,它说,这个网站不能正确加载谷歌地图。

请帮助. .

@Shraddha singh,你也收到过同样的警告吗?

辛格信心

如何将API密钥连接到matlab项目?

Josh华

你好,我使用的是R2018a版本,我遇到了之前在这里提到的问题
警告:WGS1984的轴限制不合理,忽略。请确保您绘制的数据在WGS1984坐标下,

是否有任何有效的xlim/ylim示例可以显示如何手动设置缩放级别,然后再次调用plot_google_map ?

你易

当我运行这段代码时,我发现使用websave而不是urlwrite更好。

埃文·贝茨

你好梭哈

神奇的功能。你能解释一下如何在App Designer中使用它吗?它在定义坐标轴句柄时抛出一个错误:

使用uistack错误(第53行)
使用ufige函数创建的图形不支持该金宝app功能。有关更多信息,请参阅App中的图形支持金宝app
设计师。

Vojtech看到

200美元……太贵了…

Prasunika哈雷

你好,
账单有扣除金额吗??它是否免费。? ? . .当我使用API密钥从没有计费帐户运行5次后,它不给出图形。请帮助

Prasunika哈雷

因此Halilu

你好,
我得到了与@Anuj Sinha相同的错误,我通过做两件事来解决它
1)启用用户帐户计费
2)为项目启用“映射静态API”,用于生成代码中使用的API键,该选项可以在“API和服务”部分中找到

阿Sinha

你好,
当我运行时,它显示错误:

plot_google_map
警告:
http://maps.googleapis.com/maps/api/staticmap?center=0,0&zoom=1&scale=2&size=640x640&maptype=roadmap&format=png&markers=&sensor=falseMatlab
使用urlreadwrite时出错(第98行)
下载URL错误。您的网络连接可能出现故障,或者您的代理设置配置不当。

可能原因:缺少写权限,没有网络连接,配额超过,或其他错误。
如果配额问题仍然存在,请考虑使用API密钥。

要调试,请尝试在浏览器中粘贴以下URL,这可能会导致更多信息错误:
http://maps.googleapis.com/maps/api/staticmap?center=0,0&zoom=1&scale=2&size=640x640&maptype=roadmap&format=png&markers=&sensor=false
在plot_google_map中(第451行)

ans =

[]

请建议。

燕贾

@德龙涛,我也遇到过和你一样的问题。你解决了吗?
所以这意味着启用计费是强制性的吗?

奥萨马Asghar

嘿,Zoharby,你做了一个了不起的工作,但我面临着一个问题,当我缩放图形或平移它给我错误:
警告:在模式回调期间发生错误。
在uitols .uimode. fireactionpostcallback中的14
在C:\Program Files\MATLAB\R2014a\toolbox\matlab\graph2d\zoom.p>localApplyZoomFactor at 1751
在C:\Program Files\MATLAB\R2014a\toolbox\matlab\graph2d\zoom.p>local2DButtonUpFcn at 1231
62岁
在uittools .uimode. modewindowbuttonupfcn中的53
在uitools.uimode。setCallbackFcn>localModeWindowButtonUpFcn at 54

警告:在模式回调期间发生错误。
在uitols .uimode. fireactionpostcallback中的14
在pan>locWindowButtonUpFcn在505
62岁
在uittools .uimode. modewindowbuttonupfcn中的53
在uitools.uimode。modeControl>localModeWindowButtonUpFcn at 164

请帮帮我

Loen

工作完美,但我不能在应用程序设计器中使用这个。你能解释一下如何用一个应用程序来绘制这个图吗(例如在UIAxes中绘制)

马塞尔

似乎谷歌不再允许API使用没有密钥了。我有钥匙,用这个就行了。
意味着设置“APIKey”似乎是强制性的…

德龙道

嗨,Zoharby,当我使用“plot_google_map”时,我遇到了同样的问题,一个意外的结果(地图不显示)。我在我的浏览器中通过URL,它可以显示我需要的地图。但是我不能下载地图到matlab中的图。
(PS:我已经在我的项目上使用这个API)

警告:无法下载地图表格谷歌服务器。
Matlab错误是:使用urlreadwrite错误(第98行)
下载URL错误。您的网络连接可能出现故障,或者您的代理设置配置不当。

可能原因:缺少写权限,没有网络连接,配额超过,或其他错误。
如果配额问题仍然存在,请考虑使用API密钥。

要调试,请尝试在浏览器中粘贴以下URL,这可能会导致更多信息错误:
http://maps.googleapis.com/maps/api/staticmap?center=36.7,100.7196225&zoom=9&scale=2&size=640x640&maptype=satellite&format=jpg&markers=&sensor=false&key=XXXXXXXXX

伊斯梅尔喜神贝斯

马塞尔

你好,
因为几个星期以来,这个工具不再工作没有钥匙在我的电脑。
使用有效的API键仍然给我一个错误的urlreadwrite。

有人有类似的经历吗?
谢谢!

一旦我得到我的谷歌API密钥,如何在我的MATLAB代码中使用它?

我怎么能得到API密钥,我正在使用这个函数映射的目的,但现在不能使用它,如何让它回到轨道?
警告:无法下载地图表格谷歌服务器。
Matlab错误是:使用urlreadwrite错误(第94行)
下载URL错误。您的网络连接可能有问题,或者您的代理设置有问题
配置不当。

可能原因:没有写权限,没有网络连接,配额超过或
另一个错误。
如果配额问题仍然存在,请考虑使用API密钥。

Naty原主

Nebitno

当我在谷歌项目上启用计费时,该功能又开始工作了。

CK陈

Goole:谷歌地图平台服务器拒绝了您的请求。此API项目未被授权使用此API。
我换了一台电脑,用了同样的钥匙,而且还能用!
但我不知道发生了什么?

CK陈

@anastasia孤独
Desafortunadamente, no puedo ayudarte porque no he resuelto este problem。

阿纳斯塔西娅索莱达

天go el mismo问题de CK Chen干草海藻forma de arreglarlo??

CK陈

api密钥必须绑定到信用卡才能使用吗?
我有api密钥,我张贴了代码的第139行密钥,但我仍然不能成功绘制。
139行代码:apiKey = '******************';

琐Bar-Yehuda

致所有面临访问问题的人
在您生成API密钥的谷歌项目上启用计费可能会解决这些问题。免费配额非常高,所以你不太可能面临任何费用。

CK陈

@Thomas权力
300美元?哦,不!这太贵了!

托马斯权力

我也遇到了同样的问题,地图不能用。我注册了谷歌地图api,他们给了我300美元的免费积分。这也许足够满足你的需要了;是为了我的!

Seb的偏见

使用API访问谷歌Map的策略有一些变化。在这个脚本中使用API一直是一个选项,但它似乎不再是免费的了。

CK陈

怎么办?关于the "api keys" problems? Help me plz!!

莱安德罗伊莱亚斯

我也是

安德烈斯

idem是Federico和cyhero

cyhero

我遇到了与Fedrico相同的API密钥问题。

费德里科•

是只适合我,还是已经不管用了?我在两台有和没有API密钥的机器上进行了测试,它似乎无法从服务器下载地图。谷歌的政策改变是不是又砍掉了一个好工具?

Milad Jalali

伟大的工具。如广告所述。谢谢!

阿迪尔Ahsan

优秀的工具……这样一个伟大而有用的工具……让我的生活(至少是接下来的几周)变得轻松多了……伟大的工作…:)

非常容易使用,一些很好的例子是可用的,工作比一个魅力。因为护身符实际上不起作用……这也……:)

克里斯托弗的下巴

Shyamal饶

这是一个很好的应用程序。很棒的工作。我有一个问题。如果我想输入纬度和经度值在英尺,那么我应该怎么做??

萨尔玛Habbachi

非常有用,谢谢!!

亚伦井

4月沃尔诺克

瑞安索普

Himanshu Mathur

嘿,我只得到一个白色的背景点在红色?

家伙弗里蒙特

Dianne Deauna

改变生活的

Dianne Deauna

想要

shubham古普塔

有人能帮我吗,我想从笔记本GPS中获取位置,然后显示在地图上有人能告诉我怎么做吗

Shoaib•

昆汀

工作非常好;万岁!

史蒂夫·考珀

一个伟大的工具!

琐Bar-Yehuda

@Dmitry Aleynik -这可以使用自定义样式实现:
plot_google_map(“风格”、“功能:|水元素:geometry.fill |可见性:从“)

德米特里•Aleynik

优秀的工具,我已经使用它的出版物引用的来源-https://www.nature.com/articles/s41598-017-16912-2
顺便问一下,有没有可能把海涂成白色或者完全透明?
谢谢,迪玛

洋平柴田先生

HWP

我把它用在次要情节中。它工作得很好。然而,我现在遇到了一个小问题。在完成我的子图之后,我通常会做一些小的调整,以便于发表。

当我使用:set(findobj(gcf,'type','axes'),'FontName','Arial','FontSize',10,'FontWeight','Bold', 'LineWidth', 1.5);所有的子图都将被调整,但是在地图背景的子图中,只有字体被调整,因此围绕图形的“框/轴”的线宽比其他子图要薄得多。我怎么解决这个问题?

Yongqiang周

Rhianna Cardamone

这个函数是否有可能绘制到AppDesigner UI轴中?

琐Bar-Yehuda

@Jesse de Vroet -在这里工作得很好…把详细信息发到我的邮箱:
zoharby@gmail.com
代码示例,您看到的任何错误消息,等等。也可以尝试在第413行上放置一个断点,并将“url”变量的内容发送给我。试着在浏览器中打开它,看看它是否加载了地图的图像。

@Zohar Bar-Yehuda谢谢你的回复。我尝试了plot_google_map('language','nl','showLabels',0,'style','feature:water|element:geometry.fill|visibility:off')的最新代码。地图不会使用这个参数进行绘图。你能帮我设置论点吗?

谢谢!

琐Bar-Yehuda

@Jesse de Vroet -这确实是一个bug。showLabels=0只是附加了一个额外的自定义样式,在已经传递了一个样式的情况下,这样做是不正确的。使用最后的代码版本,它应该修复它。

杰西·德·弗罗特

这是在地图上绘制数据的一个很好的工具。它真的很容易使用。

不幸的是,我遇到了这个问题:当使用这个查询:
plot_google_map(“语言”、“问”、“showLabels”,0,“风格”,“功能:|水元素:geometry.fill |可见性:从“)
标签会消失,但水却不会。仅使用时
plot_google_map(‘语言’,‘问’,‘风格’,”特点:水|元素:geometry.fill |可见性:从“)
标签很明显,但填充物没有。我想把这两者结合起来,但我不能让它工作…

是我做错了什么还是这是个bug?

克里斯

伟大的工具!varargout的小错误,第535、536、637行的索引差了1。uniImag应该放在索引4等。

克里斯

琐Bar-Yehuda

@Patrick Monsere -谢谢!这似乎确实解决了问题。推动修复。

帕特里克Monsere

谢谢,这工作得很好!
我有麻烦的颜色条轴被缩放不当,像其他一些人。我似乎已经通过添加“CDataMapping”纠正了它,“缩放”到第498行结束,h_tmp = image(lon…
现在,在我的数据上绘制地图后,颜色条保留了正确的比例。

凯尔Brownstead

杰克壮族

jayapradeep challa

嗨,Zoharby,谢谢这个神奇的工具,你能帮忙提供解决方案吗?
我试图添加“信息窗口与一些自定义文本”到标记,我知道我可以添加自定义窗口与谷歌静态api的,但你能帮助我如何使用你的工具在matlab -绘图,你能帮助我如何获得缩放级别的信息....

谢谢

我想画出比线形图更大的特定区域。我不想固定我的线形图的轴是我的谷歌地图的范围。请告诉我如何调整我想在plot中显示作为背景的区域范围?

koray beyaz

李永罗

LukeKa

我试着用它与2011b 32位,它不工作。图打开,我的四个gps坐标显示出来,但地图不可见。我得到的消息:'Matlab错误urlwrite(第140行)'和图像无法下载的消息。我用2016年的版本做了同样的尝试,效果非常好。问题是,我需要使用它的系统只有2011b。你能帮忙吗?

让巴拉克

菲利普Glira

粉丝王

汤姆Magowan

大卫

罗杰Llaurado

Khanifakhon Rasulova

琐Bar-Yehuda

用哪个MATLAB版本?你是在一个新的数字上尝试,还是在一个已经绘制过的数据上尝试?
如果当前轴的缩放对绘制地图没有意义,则会抛出此警告。

R C

您的示例代码抛出了这个

警告:WGS1984的轴限制不合理,忽略。请确保您绘制的数据在WGS1984坐标下,
在plot_google_map(第234行)中

大卫·雷曼

凯苏莱曼

河港纵横关

泽维尔

撒母耳Kekuewa

总的来说,它是伟大的,非常方便。然而,我最近遇到了一些问题,其他人已经提出了之前。每当我plot_google_map它改变我的caxis([min max]),我的轮廓仍然是适当的颜色,但不是caxis显示与每个轮廓相关联的不正确的数值。有解决方案吗?
谢谢。

Quan85

一个非常好的应用程序!
我真的很喜欢自动更新图形同时保持细节图像分辨率的想法。
谢谢你!

Ugur Keskin

好了!缩放效果也很好。整体好于预期!

yangbo

非常感谢

yu lin蔡

太棒了!

莫英航

伟大的工作!
知道怎么切换到卫星视图吗?

船底座索特

太棒了,很容易使用:)谢谢!

Ayush Choubey

你好,
我想添加比例尺到地图,因为我们得到谷歌地图(不是静态)。
有办法增加一个刻度吗?

约瑟夫Ahamioje

很抱歉。这是我最终使用的代码,但没有出现PNG文件。只有谷歌地图位置出现。

Lat = (29.581226);
Lon = (-98.617149);
情节(经度、纬度、‘r’,‘MarkerSize’,20)
plotGoogleMap
集(gcf,渲染器,“zbuffer”)
export_fig Capture1.PNG

约瑟夫Ahamioje

我试图上传一个PV PLANT电路,并让它在谷歌地图上绘制。我有我想要上传电路的地方的坐标。我尝试了这一点,但它只带来了谷歌地图的位置,而不是电路。有什么建议吗?

Lat = (29.581226);
Lon = (-98.617149);
情节(经度、纬度、‘r’,‘MarkerSize’,20)
plotGoogleMap
plotCircuitLines (DSSCircObj);

格兰特

谢谢《光明篇》!

科里·约翰逊

卢卡斯

我真的很喜欢这个功能……用它来绘制地图,我现在想用在一篇学生论文中。
有人知道如何正确引用情节吗?
In想在文本中输入“.....”来提到它(谷歌Maps, 2016)。”
但是我要在我的“参考”清单上写些什么呢?
喜欢的东西:

谷歌地图(2016)。纽约-巴黎-伦敦。(使用plot_google_map创建,Zohar Bar-Yehuda)。

-我必须找到/提到任何URL,可能在后台使用?
-我必须提到静态谷歌地图API吗?
-是否有任何“位置”/(在哪里和如何),我必须提到该函数来自MATLAB fileExchange?

我希望有人能想出一个好的解决办法。
提前谢谢你,
卢卡斯

我还看到了plot_google_map。M改变我的颜色条范围..你能说说为什么吗?

嗨. .这是美妙的。但是你能帮我一个小问题吗?我需要在地图上方绘制空气污染数据(用彩色圆圈表示)。圆圈的颜色应该根据浓度而变化,也有一个颜色条。有什么简单的方法吗非常感谢。苏维埃社会主义共和国

大卫

伟大的工具!谢谢!

我一直得到这个错误!!!!
> > plot_google_map
内存不足。可能的原因是程序中的无限递归。

newplot>ObserveAxesNextPlot错误(第124行)
班(ax,“重置”,hsave);

Shibing刘

太棒了! !

ISURU SAMARAKOON

伟大的工作。

安德烈斯

很好

科里·约翰逊

埃文Kalina

法赫德Furniturewala

我得到这个错误,它设置我所有的点在一个固定的轴(像一条直线)和地图不显示。
错误:
使用==> set出错
发现错误的属性值。
对象名称:axes
物业名称:“YLim”
值必须是递增的且非nan。

有人能帮帮我吗?

干得好,先生
如果用户想通过拖拽从一个国家移动到另一个国家,它需要时间加载。
如何减少装载的时间延迟?
可以做什么改变,使国家的位置可以在世界地图上立即查看?

我在等,先生

布莱恩·萨顿

彼得·米尔斯

很棒的绘图工具。我真的很想在谷歌地图上记录站的位置画一个风玫瑰。我该怎么做呢?

雪莱挂

卡洛斯

伟大的工具。我用这个来画轨迹…我在文件交换上使用selectdata函数抓取点时遇到了问题。具体来说,它将检测到谷歌地图上绘制的轨迹之外的几个点。关于如何摆脱这些隐藏的数据点,有什么建议吗?谢谢

琐Bar-Yehuda

@lostreet -你能给我一个代码样本,说明你的颜色问题吗?
据我所知,这是不应该发生的。

lostreet

我试图在谷歌地图上绘制一个半透明的等高线。不幸的是,当添加到谷歌地图时,等高线图的颜色正在改变。你有解决这个问题的办法吗?

Seyedfarid Ghahari

如何以倾斜视图查看地图?

琐Bar-Yehuda

@DHRUPAL SHAH -对此进行了修复(如果没有临时文件夹的权限,则使用当前文件夹)。应该能解决你的问题

DHRUPAL沙

伟大的使用。
面对一个非常不道德的错误,4小时的windows用户无法访问“Temp”文件夹。
解决方案:随机发现我们使用matlab作为“以管理员身份运行”。

琐Bar-Yehuda

@lostreet -修复了这个警告。下载当前版本。

lostreet

我还有一个问题。

当执行代码时,我总是得到这样的警告:

警告:Struct字段赋值会用类double覆盖一个值。参见MATLAB R14SP2版本说明,
将非结构变量赋值为结构显示警告,有关详细信息。
在plot_google_map的180处

我必须如何更改代码才能避免这种情况?

lostreet

我在前面的答案中找到了解决问题的方法。

“最简单的方法是手动设置你想要的缩放级别(使用xlim/ylim或axis命令),然后再次调用plot_google_map,迫使它刷新到当前缩放。”

lostreet

非常好的工具。

我和Rezka有同样的问题:是否可以在需要的区域自动缩放?谢谢你的帮助

lostreet

嗨,有麻烦的工作与轮廓和轮廓,我的轮廓的颜色被蓝色覆盖。在下面的代码中,我尝试将“plot_google_map(…)”向下移动到最后,得到相同的结果。注意,plot命令中的红色x保持红色。有人想办法解决这个问题吗?

plot(Xs, Ys, 'xr')
plot_google_map('MapType', 'satellite','Alpha', 1)
抓住
contourf(xq, yq, Things)
colorbar

凯利今天

宝贵的工具! !

Rezka

真的有帮助。谢谢《光明篇》。
我想知道哪些代码,我必须修改,以自动缩放地图没有工具从图形选项。
谢谢,致以良好的问候

我觉得这个项目很有趣。
我在谷歌地球上做过类似的工作,所以我想澄清一些疑问。

你能告诉我当你“将数据投影到统一的WGS1984网格”并使用myTurboInterp2()函数时,你会做什么吗?

分辨率随纬度的不同而不同。你能解释一下你是如何进行图像调整来纠正这个问题吗?

您使用赤道测量的分辨率。当您确定curResolution时,许多文档都引用了乘以cos(lat * pi/180)。

谢谢,布鲁诺·迪亚斯

琐Bar-Yehuda

Pete -更新到最新版本的代码。它解决了这个问题。

皮特·谢尔

我认为v2015a有问题
inputParams。([“斧头”num2str (axHandle * 1 e6, ' % .0f ')))。它返回错误。

琐Bar-Yehuda

马克,谢谢你的建议。我将在下次更新中添加它。

蒂姆•考夫曼

马克

嗨,梭哈

我做了一个非常小的改变,提高速度安静一点。我用M=webread(url)替换data=urlwrite(filename,url),使用在R2014b中引入的webread。这样可以避免将TMP映像保存在当前文件夹中,从而写入磁盘。用它更新实际版本可能是个好主意。

欢呼,
马克

snrlax

嗨,梭哈

这个工具箱很棒,它帮了我很多。现在我想把它用于另一个目的,3D绘图。是否可以在xOy平面上绘制地图?

我们的目标是做一个3D条形图,在特定位置的条形图。

欢呼。

琐Bar-Yehuda

Carine -使用:
Point = ginput(1);
单击地图将返回该点的经度和纬度。

Carine

嗨,梭哈

谢谢你的工具箱。
我是一个非常新的映射,所以我希望我的问题是有意义的:我需要,从谷歌地图,用户点击一个地方,并收到这个地方的坐标。这可能吗?
欢呼。

赫克托耳Usach

关于我最后的评论,我很抱歉,我没有意识到我提到的问题(图中文本不清楚)只是在使用tex解释器时发生的,所以它看起来更像是matlab的bug而不是这个函数的问题。

赫克托耳Usach

琐Bar-Yehuda

Ron - scale仍然存在,默认为scale=2。

赫克托-我不太明白你的问题。请将更多详细信息和示例发送到zoharby@gmail.com,我会尽力帮助您。

赫克托耳Usach

工作很好,但当有文字的数字,它显得模糊。实际上ylabel被剪掉了。有解决方金宝搏官方网站案吗?(Matlab 2012 b)

罗恩电子乐

如果可以的话,我会给它打十颗星。非常感谢楼主的分享。早期版本有Scale=2选项。这似乎在2014年的更新中消失了。有什么原因吗?

伊卜拉欣-

嘿,谢谢你。非常有用的。然而,当使用旋转3D工具旋转该地块时,地图就会消失。有没有办法让它保持在原来的位置?

彼得罗

是否有可能有一个更高的图像质量的地图?

乔治Papakonstantinou

琐Bar-Yehuda

Wyfi Mcfly -在最新版本中修复(使用了一个更优雅的解决方案,在句柄中使用'UserData'字段。请更新到最新版本。

Wyfi Mcfly

R2014在第109行中断
通过铸造斧柄来固定

inputParams。([“斧头”num2str(双(axHandle) * 1 e6, ' % .0f '))) =变长度输入宗量;

schwarzkater

我爱你!!(开玩笑的)

你的脚本非常非常有用。
谢谢。

NickG

嗨,这是一个伟大的工具,工作得很好,当我正常运行它。我在试图通过MATLAB出版商运行代码时遇到了问题。MATLAB挂起并且不发布绘图。有人遇到过这种情况吗?

奇妙的工具!

它适用于3D图吗?我尝试在plot3函数生成的图上使用它,但它不起作用。有什么建议吗?

最好的

马库斯

伟大的工具!
从Matlab 2014b开始,我得到了分散的图和色条的大问题。执行plot_google_map后,颜色条不再适合分散的绘图。
我不得不改变415行来解决这个问题:
h = image(lonVect,latVect,uniImag, 'Parent', axHandle,'cdatamapping','scaled');

欢呼,
马库斯

杰夫•杰克逊

Ilya Shipachev

极大地加强了GPS数据的工作。
谢谢!

吉斯

从以前的评级更新-代码被修改为2014b,所以我把我以前的4*评级改为5*!

此前

你好梭哈
我想知道是否可以在没有网络的情况下下载谷歌地图并在电脑上绘制坐标?
也有可能有一个所需的缩放级别的初始情节。

谢谢,
此前

乔治Papakonstantinou

嗨,Zonar,谢谢你的提交。
正如用户之前已经注意到的那样,在使用R2014b运行代码时存在一个问题,这源于每个句柄都是对象而不是双精度对象。

您很好地包含了一个ResizeFcn,它在图形调整大小时被调用。
在ResizeFcn中,在for循环中使用break。你能给我解释一下你那样做的原因吗?
因为如果你有两个坐标轴,有谷歌个映射
即。
次要情节(1、2、1);plot_google_map;次要情节(1、2、2);plot_google_map;

ResizeFcn函数不会重新绘制两个映射,你会发现其中一个的分辨率很差。

吉斯

这是一段很有用的代码。

不幸的是,正如下面提到的,它与2014b分手了。我在第109行有一个问题(inputParams。([“斧头”num2str (axHandle * 1 e6, ' % .0f '))) =变长度输入宗量;)。我得到的错误消息是:“未定义的函数'mtimes'输入参数类型为'matlab.graphics.axis.Axes'。”

Shameek

苏尼尔Dowray

Zohar,非常感谢你的回复。就像你说的,for循环在缩放速度上造成了问题。

琐Bar-Yehuda

拉里,谢谢你的提醒。在接下来的几周我很忙,一旦我有空闲时间就会修复并发布一个新版本。

苏尼尔Dowray

苏尼尔Dowray

嗨,Zohar,感谢你分享这段精彩的代码。我有一个查询,我试图绘制数据点映射到相应的坐标。问题是,数据点的数量很大(大约15000 - 35000点)。我能够在地图上绘制这些数据点,但面临缩放/平移速度的问题。当我试图放大或缩小地图上的数据点时,地图反应变得太慢。在地图上的点的数量是否有任何限制,或者我应该检查任何其他参数来克服这个问题。谢谢

拉里

plot_google_map()已与R2014b中断。(R2014a不确定)

第108行gca返回现在返回一个坐标轴对象,而不是之前的double对象。

彼得罗

琐Bar-Yehuda

Pietro -这样的功能可以很容易地添加。

同时,如果你有映射工具箱,你可以使用几行代码来实现这一点:

负载工具箱\ \ mapdisp \私人\区域地图。垫worldRegions
(tf, pos) = ismember(“土耳其”,{worldRegions.name});
轴([worldRegions (pos)。lonlim worldRegions (pos) .latlim])
plot_google_map

彼得罗

是否有可能提供一个字符串的功能,如“土耳其”,并获得土耳其的地图?

Nebitno

琐Bar-Yehuda

wiwi -似乎有一些随机错误的计算机ip。
尝试从谷歌获取一个API密钥并设置它,它可能会解决您的问题。

如果您需要更多的帮助,请随时与我联系:
zoharby@gmail.com

wiwi

嗨,Zohar,这个代码不适合我。它只显示纬度和长节点。我有一个错误“警告:无法下载地图形式谷歌服务器。\n可能原因:没有网络连接,或配额超过(1000
每天的地图请求)。
在plot_google_map中186"

我使用的是Matlab2014a。请帮帮我!!谢谢

加里

有趣-在不同的计算机上工作得很好。对不起,我误报了警。

琐Bar-Yehuda

加里,不用钥匙也能在这里工作。也许这取决于你的IP,因为某些原因谷歌对待你的IP不同。
无论如何,获取API密钥并设置它只是几分钟的事情,并且可能会解决您的问题。

加里

谷歌改变了什么东西,把这个弄坏了吗?代码生成的URL声明需要API密钥,但是您在get_google_map中提供的获取密钥的链接表示不再需要密钥。

Mevlut

干得好,Zohar。我有一个问题:
如果你使用下面的代码:

Lat = [48.8708 51.5188 41.9260 40.4312 52.523 37.982];
Lon = [2.4131 -0.1300 12.4951 -3.6788 13.415 23.715];
情节(经度、纬度、‘r’,‘MarkerSize’,20)
plot_google_map

plot_google_map如何知道使用变量lat和lon?
我尝试了4个变量:

latR= [1 2 3 4]
lonR = [1 2 3 4]
latG =[1 2 3 4]
长= [1 2 3 4]
hold on, plot(lonR,latR,'.r','MarkerSize',20)
hold on, plot(lonG,latG,'.g','MarkerSize',10)
plot_google_map

它工作得很完美!!但是,函数plot_google_map怎么知道它要取4个变量呢?

干得好,谢谢
MEvO

苏拉

嘿,干得漂亮。

如果你能在电脑上添加一个保存地图贴图的脚本,它将减少对API键的要求。API密钥将仅用于下载额外的地图或当需要更新时。

Oriol C

伟大的脚本。我在图中看到的图像和脚本输出的图像之间是什么关系?我需要将latVec和lonVec与我从saveas获得的图像联系起来。

谢谢!

Nebitno

彼得罗

是否可以从谷歌地图中获取商业景点的位置(例如。餐馆,酒店等)在地图上?

琐Bar-Yehuda

Shatrughan——很棒的建议。我会尽快将其整合到脚本中。

Shatrughan

你好梭哈

希望你还记得我指出的在谷歌地块上添加“地图比例”的必要性。你说过等你有时间再做。似乎这仍然是一个持久的问题,所有用户使用你的'GREAT'脚本。然而,我遇到了另一份关于FEX的提交,用于制作规模,很简单,我很长时间以来一直在使用这两个脚本。只是认为这可能会帮助别人,也对你,因为它可能会节省你的时间。:)

链接如下:

//www.tatmou.com/matlabcentral/fileexchange/33545-automatic-map-scale-generation

使用plot_google_map后
使用makescale即可

你完蛋了!!

Matlabbing快乐!!

彼得罗

嗨,Zohar,谢谢你的回复。我发现这个功能非常有用,不幸的是我无法控制比例,比如1:2万,但我只能得到距离。

琐Bar-Yehuda

Pietro -这将是相当棘手的,因为它也取决于你的屏幕大小等。
我想在地图的底部添加一个比例指示器,但一直没有实现。希望有时间能加进去…

彼得罗

伟大的工作。是否可以控制地图的比例?以1:2万的地图比例尺,通过实例生成地块。谢谢

豪尔赫

Zohar,我以为你知道OSM瓷砖,因为你已经展示了一个令人印象深刻的工作与这个功能!我的评论更多的是针对其他成员的开放想法=)

琐Bar-Yehuda

Jorge—使用tile有它的优点(你可以选择你想要的分辨率,本地缓存的可能性等),但会使代码更复杂和运行更慢,因为它需要为你想要显示的每张地图下载几张图像。
我近期没有计划去看它……
我不做计划

豪尔赫

神奇的!我唯一的意见是,从OpenStreetMap中移除贴图有意义吗?例如,MapQuest存储的OSM瓦片甚至可以以每秒4000瓦片的速度访问!

http://wiki.openstreetmap.org/wiki/Mapquest#MapQuest-hosted_map_tiles

和被简单地像http://otile1.mqcdn.com/tiles/1.0.0/osm/zoom/x/y.jpg其中x和y很容易从所需的坐标中计算出来:

http://wiki.openstreetmap.org/wiki/Slippy_map_tilenames#Octave

这样可以避免谷歌的限制,因为OSM现在是一个非常成熟的项目。如果我有时间,我会很高兴实现这一点,但我认为可能其他人在这里被谷歌惹恼了,可以使用这个想法=)

琐Bar-Yehuda

你好大卫,

最简单的方法是手动设置您想要的缩放级别(使用xlim/ylim或axis命令),然后再次调用plot_google_map,迫使它刷新到当前缩放。

大卫

伟大的代码!我不知道怎么放大到一个特定的位置。使用命令缩放(15)不会放大我的GPS点。

有什么方法可以设置图形的ylim和xlim(使用这些命令映射不会刷新)?我试图在循环中使用它来可视化我的自行车骑行(需要相当放大)

大卫·雷丁

更新我下面的评论:

意识到错误是由于一个糟糕的坐标引用-如果坐标不适合全局平面,那么,错误就会发生。

大卫·雷丁

《光明篇》,
首先,功能强大,实用性强。

不知您能否对突然出现的错误进行评论。脚本运行得很好,但今天我启动它,现在它不是。我收到以下错误:

使用set时出错
发现错误的属性值。
对象名称:axes
物业名称:“YLim”
值必须是递增的且非nan。

轴>LocSetLimits错误(第206行)
集(ax,……

轴错误(第94行)
LocSetLimits (ax (j), cur_arg);

plot_google_map中的错误(第250行)
在下载新图像之前,尽可能快地更新轴

测试中的错误(第11行)
plot_google_map(“APIKey”、“* *键隐藏* *”)

感谢您的宝贵时间!

泽维尔

谢谢你的快速反馈。与此同时,我找到了一个解决方案,我有“‘PaperPositionMode’,‘auto’”的图形属性,除了“‘可见’,‘关闭’”,它工作得很好,这允许获得大量的计算时间。

琐Bar-Yehuda

好吧,原来之前的评论没有通过…
不管怎样,Xavier -问题是由于plot_google_map设置了一个自定义的图形调整大小回调来改变缩放,如果图形被调整大小并改变其纵横比。
你可以通过注释掉第434行来禁用它,该行设置了图形调整大小回调:
set(打架,'ResizeFcn', @update_google_map_fig);

琐Bar-Yehuda

嘿,抱歉我错了,那面旗帜只有我这里的本地版本。
要解决你的问题,注释出第434行:
set(打架,'ResizeFcn', @update_google_map_fig);

泽维尔

你好,
首先非常感谢这个脚本,这是非常有用的。
我有一个问题,我自己没有找到答案。我将这个脚本使用到一个循环中,其中每次迭代代表一次旅行。我将图形保存为png文件。我希望这个身影不会出现。我使用数字('可见','关闭'),但数字出现在saveas命令(通过调试模式找到),但如果plot_google_map命令被删除,数字就不会出现。我查看了第379行等等,但没有找到解决方案。你有什么想法吗?
谢谢

水木

琐Bar-Yehuda

嗨,杰森,

从你的错误来看,你似乎在使用一个非常旧的MATLAB版本,其中缩放命令的语法是不同的。
您可以通过禁用涉及自动刷新特性的所有功能来让它工作。注释掉第421-429行。
这应该可以让它为您工作,但是如果您希望地图在放大或缩小后刷新,则需要再次调用plot_google_map。

杰森哦

下面是我的错误信息;

???在调用C:\Program Files (x86)\MATLAB71\toolbox\matlab\graph2d\zoom时,未分配输出参数“out”(可能还有其他)。米(变焦)”。

在==>缩放81时出现错误
如果nargin==2 &&…

在==> plot_google_map 421错误
zoomHandle =缩放;

你知道我为什么收到这条信息吗?

摩尼

感谢你开发了Zohar。我可以把它用在我正在做的一个项目上。是否可以在这张地图上添加面积测量工具?如果是,怎么做?
谢谢你! !

克莱门斯

刚刚发现:在使用set(gcf,'renderer','opengl')进行渲染之后,甚至saveas(gcf, 'out.jpg')也可以工作。

克莱门斯

嗨,梭哈

非常感谢您的支持!金宝app我尝试了你的建议,在set(gcf,'renderer','zbuffer')的渲染设置下,背景(map) +透明设置再次消失。

Set (gcf,'renderer','opengl')并使用export_fig导出。虽然M对我有用:)

致以最亲切的问候

琐Bar-Yehuda

嗨,克莱门斯,

我已经更新了已知问题部分,希望能解决您的问题。希望这能有所帮助:

2)保存带有图像/矩阵覆盖的地图(尤其是半透明的)有时会导致意想不到的结果(地图不显示等)。如果你遇到这样的问题,建议使用export_fig提交:
//www.tatmou.com/matlabcentral/fileexchange/23629-exportfig
最有效的组合似乎是:
集(gcf,渲染器,“zbuffer”)
export_fig(“out.jpg”)

克莱门斯

很适合我。我只有拉里已经提出的问题,如果我把我的数字导出到一张图片,地图就会丢失。除了截屏之外,其他人是否也有其他问题?

罗杰GALLOU

嗨,梭哈

我和拉里的想法一样。当我在Web浏览器(未配置代理的Firefox)中发布示例中给出的URL时,我可以看到谷歌Maps的静态映射。
我的配额没有问题,我真的加载了最后一个版本。
你能给我一些帮助吗?

谢谢。的问候。

Anuja

向你致敬,它真的很好,对我来说很好…我试了两个点。
我真的很想问一件事,我们如何提取源点和目的地之间的经纬度点,我们需要手动输入还是需要一些编码。
谢谢

琐Bar-Yehuda

拉里,你确定你用的是最新版本吗?
如果是,您可以尝试在第316行- urlwrite(url,文件名)放置一个断点;
复制url到您的浏览器,看看它是否在那里工作。
无论如何,如果你需要更多的帮助,请随时联系我:
zoharby@gmail.com

拉里

这几天plot_google_map在我和我同事的电脑上都不能使用。它一直显示:

警告:无法下载地图表格谷歌服务器。
可能原因:没有网络连接或配额超过。
如果配额问题仍然存在,请考虑使用API密钥。
在plot_google_map的318处

我的配额不是问题。我也尝试过使用API密钥,但没有效果。任何想法?

谢谢!

拉吉夫

伟大的脚本。它显示小错误为我显示:缩放错误。它首先显示红色标记,然后只显示地图,而不是红色制作者。调用'D:\MATLAB7\toolbox\matlab\graph2d\zoom时未赋值的一个或多个输出参数。米(变焦)”。
在==> plot_google_map中402处出现错误
zoomHandle =缩放;
错误在==>测试在16
plot_google_map(“maptype”、“路线图”)
请帮助如何使它运行?

琐Bar-Yehuda

Naveed - v3仅用于javascript API。这段代码使用的静态地图API仍然使用v2。

如果您已经将热图数据作为一个矩阵,那么您可以简单地使用IMAGE绘制它,并给出一个值<1的AlphaData矩阵,以使其半透明。
如果您有点数据,首先需要将其转换为热图矩阵。我需要在未来几周为一个项目自己做。如果我找不到现有的解决方案,我可能会创建一个,并希望将其提交给FEX。

Naveed

嘿,谢谢你这么棒的代码!这正是我需要的。快速问题:您是否计划将其升级到谷歌映射API的v3 ?另外,你能建议如何在渲染的地图中添加热图层吗?

琐Bar-Yehuda

加布里埃尔,这段代码中不应该有任何递归。请给我一个例子如何重现错误。

盖伯瑞尔

我曾经做过一两次绘图,但现在已经达到最大值了。递归限制一直存在。任何帮助吗?

琐Bar-Yehuda

Konstantinos -在绘制路线后简单地调用plot_google_map。它应该在路线的背景中显示地图。

Konstantinos

干得好,真的很有帮助。我试图在地图上绘制特定的路线,这是在一个gpx文件,这是我从谷歌地图创建的。我使用gpxread函数来读取文件,我可以在一个单独的窗口上显示路线,但我不知道如何在地图上显示路线。有人知道吗?

亚历山大

你好琐!
在你的新代码和检查我的之后,似乎地图没有拉伸(也当你删除“轴等于”....)。非常感谢

琐Bar-Yehuda

Alexandre -我认为你的意思是地图在一个轴上被拉伸了,这在新版本中不应该发生。
如果你在新版本有同样的问题,请给我一个示例代码来重现问题。

亚历山大

干得好,非常有用,非常感谢。但我和Chad Greene(2012年3月)有同样的问题。有人知道如何在俯视图而不是60°倾斜的图像吗?谢谢

真的很好!我正计划为我的项目做一个GPS跟踪器,我找到了我正在寻找的东西。但需要相当多的工作来实现实时跟踪或后期处理。

输出参数“varargout”(可能还有其他)在调用“E:\plot_google_map.m>plot_google_map”时没有分配。

Giacomo Alessandroni

拉里

谢谢,Seb。这是一个很棒的工具。

Seb的偏见

我的错误,有一个旧版本,更新一个工作如鱼得水!

拉里

它似乎与pcolor不兼容。Matlab可以使用pcolor和plot_google_map绘图,但当绘图保存为图像(如png等任何格式)时,背景谷歌地图就消失了。

Seb的偏见

你好,
最近有人对这个剧本有什么问题吗?直到今天,它都运行得很顺利。
???错误使用==> imread在387
无法确定文件格式。

在==> plot_google_map在189错误
[M Mcolor] = imread(filename);

拉里

琐Bar-Yehuda

Amit,使用默认使用的新的scale=2参数,你实际上得到了一个1280x1280的图像,这给出了一个更好的渲染(尽管响应有点慢…)

彼得

Floris

嗨,阿米特,

640*640的限制由谷歌API设置。看到https://developers.google.com/maps/documentation/staticmaps/index欲了解更多信息

阿米特

干得好,Zohar Bar-Yehuda。对我的工作很有帮助,谢谢。
虽然我想知道为什么图像大小限制在640X640。如果能消除这种限制,那就太好了。也许让图像大小与屏幕大小成比例是个好主意。屏幕大小可从
.getScreenSize java.awt.Toolkit.getDefaultToolkit () ()

再次感谢。

据我所收集的信息,谷歌从按域计算使用量改为按用户计算使用量。所以基本上,如果你在你的网站上使用静态地图,一个用户用完所有的配额不会影响任何其他用户,只会影响那个特定的用户。

除此之外,这是一个很棒的软件!它很容易与旧的Matlab(2003)兼容,并且在Matlab R2008b下工作得很好。

至于未来的请求,缓存(即重命名而不是删除)磁贴将是很棒的!我意识到存储瓷砖可能违反谷歌的条款,但临时肯定会做的把戏!

琐Bar-Yehuda

卡丁车-我认为API按键模式有问题。谷歌似乎忽略了它,因为请求在HTTP报头中没有referrer字段。我会试着找出解决办法。

海科

小型赛车

我尝试用我自己的API密钥
plot_google_map(“APIKey”、“xxxxxxxxxxxxxxxxxxxxxxxxxx”)

但是我的警告配额已经超过了。我该怎么办?

琐Bar-Yehuda

规模化是个好主意,而且很容易实现。等我有时间再加。

Shatrughan

很棒的剧本!!简单易用..然而,我有一个问题,如何把地图比例放在情节?如果你能添加方向符号(北/南)..太好了,任何回复都将不胜感激。

琐Bar-Yehuda

只是注意到他们改变了API并再次引入了API密钥。
它没有说如果你不使用任何密钥的限制是多少,但从一个快速测试来看,它看起来是每天400个(我猜每个IP)。

如果你有自己的密钥,你每天可以使用多达25,000次请求。我会试着上传一个新的版本,用一个简单的方法把你自己的钥匙。

琐Bar-Yehuda

嗨,马克,

这个函数使用谷歌的静态地图API,因此是完全合法的。它也被限制在每天1000个地图请求在API中指定。看到的:
https://developers.google.com/maps/documentation/staticmaps/

马可

有人考虑过这个申请中可能存在的法律问题吗?
据我所知,这是禁止访问地图通过直接创建的url。
访问是合法的,只有通过api的谷歌提供(如javascript)。

如果您有不同的信息,请让我们知道!

谢谢

薄荷酱

georg

K E

很好。

安德里亚

嘿,很棒的功能!

我在想一件事。我得画一张海洋上靠近海岸的风图。因此,我想把海岸线放在上面,而陆地只是在等高线图的顶部表示为灰色或黑色的表面。是否有可能得到土地的googlemap背景在我的县域plot?

乍得格林

啊,有一个简单的解决方法:在绘图命令后添加“axis equal”。

乍得格林

这是难以置信的容易安装和使用!

只有一个问题:无论我选择路线图、地形还是卫星,它似乎都在绘制45°角视图。你知道怎么得到俯拍图像吗?

Erdal Bizkevelci

奥利弗

伟大的工作。这真是太好了,谢谢!

Chandrakumar

嗨,zohar,

希望你一切都好,
实际上,我有一个天线辐射水平的功率图在地面上分布了大约300米。现在我要做的是在谷歌地球上的一个特定区域上放置功率图这样我就能看到天线所在区域的功率图,你能帮我吗?

迈克尔Wengler

出众、好用、优雅!

琐Bar-Yehuda

Seb -我正在将下载的PNG地图(当使用路线图时)转换为真彩色图像,以防止色彩地图冲突的问题,所以我真的不知道为什么你会有问题。

也许你可以给我一个你使用的示例代码,我会检查它。

Seb的偏见

哇,太酷了,谢谢!
问:我正在使用等高线图,并在后面添加地图。所以我为等高线设置了颜色贴图和透明度,但当我绘制背景贴图时,所有颜色都会改变。你知道这是从哪里来的吗?

谢谢!

亚伦Holtzman

丹麦zubairi

让我的生活更轻松

加里

1月维大

MATLAB版本兼容性
使用R2009b创建
与任何版本兼容
平台的兼容性
窗户 macOS Linux

社区寻宝

在MATLAB Central中找到宝藏,并发现社区如何帮助您!

开始狩猎!