如何在gmplot中的不同文件上绘制几个路径?

时间:2017-10-03 06:06:19

标签: python

我有几个车辆路径,我想在不同的文件上自动绘制所有这些路径。我试图用for循环来做,但这些点最终在每个后续文件上重叠。所以,基本上,在最后一个文件中,我有所有路径。

这是我的功能。有人可以帮我弄这个吗?

def drawUnique(uniqueVeh):
    for i in uniqueVeh:
        latitudes = list(map(float,list(gps_data[gps_data["id"] == i]["lat"])))
        longitudes = list(map(float,list(gps_data[gps_data["id"] == i]["long"])))
        gmap.scatter(latitudes, longitudes, size=10, marker=False)
        gmap.draw("map" + i + ".html")

1 个答案:

答案 0 :(得分:0)

该问题与gmap对象的声明有关,这显然是在循环之前进行的,因此使用相同的对象并保存所有标记。

您只需在每次迭代开始时定义一个新的gmap对象,以创建一个全新的地图:

def drawUnique(uniqueVeh):
    for i in uniqueVeh:
        gmap = gmplot.GoogleMapPlotter(center_lat, center_lng, zoom) # replace the values !!

        latitudes = list(map(float,list(gps_data[gps_data["id"] == i]["lat"])))
        longitudes = list(map(float,list(gps_data[gps_data["id"] == i]["long"])))
        gmap.scatter(latitudes, longitudes, size=10, marker=False)
        gmap.draw("map" + i + ".html")

基本上问题中的代码可以转换如下:

import gmplot
gmap = gmplot.GoogleMapPlotter(40.640, -73.926, 16)    

# turn 1
gmap.scatter([40.642810, 40.638240], 
             [-73.915, -73.922901], 
             'cornflowerblue', edge_width=8)
gmap.draw("map1.html")

# turn 2 
# same gmap : all marks are added and overlap the first
gmap.scatter([40.644494, 40.637083], 
             [-73.925044, -73.926464], 
             'red', edge_width=8)
gmap.draw("map2.html")

您需要在每个绘图之间插入此行,以避免map2.html中的重叠问题:

gmap = gmplot.GoogleMapPlotter(40.640, -73.926, 16)