Базовая карта Python удалить большой круг

У меня настроена функция обратного вызова, которая соединит две соответствующие точки на карте, когда вы нажмете на одну из них. Моя проблема в том, что я не могу удалить линию, соединяющую их. В основном функция ниже вызывается каждый раз, когда нажимается маркер. Мне это нужно, чтобы удалить старый большой круг и нанести на карту новый. Вместо этого он просто продолжает создавать новые строки вместо удаления старых. Вы можете игнорировать операторы if, потому что они работают так, как ожидалось. Мысли?

def mapPair(self,localLat,localLon,remoteLat, remoteLon):
    if self.connectingLine != None:
        self.connectingLine.remove() # <--doesn't work

    if localLat != "unknown" and self.currentLocalItem is None:
        self.currentLocalItem, = self.map.plot(localLon, localLat, 'bo', markersize=15, color='g', label="Local")
    elif localLat!= "unknown" and self.currentLocalItem is not None:
        self.currentLocalItem.set_ydata(localLat)
        self.currentLocalItem.set_xdata(localLon)

    self.connectingLine = self.map.drawgreatcircle(localLon, localLat, remoteLon, remoteLat, lw=3)

    self.fig.canvas.draw()

person Jaron Bradley    schedule 30.09.2014    source источник
comment
Я только что вернулся и попытался запустить больше функций, таких как self.connectingLine.get_xydata, и я получаю эту ошибку. в чем дело. видимо каким-то образом self.connectingLine - это список, а не объект?   -  person Jaron Bradley    schedule 30.09.2014


Ответы (1)


Ну, я не уверен, почему это происходит (или если это должно произойти), но когда я назначил self.connectingLine, я получаю список вместо объекта. Я не знаю, как это исправить, поэтому вот моя работа

def mapPair(self,localLat,localLon,remoteLat, remoteLon):
    if self.connectingLine != None:
        for x in self.connectingLine:
            x.remove()

    if localLat != "unknown" and self.currentLocalItem is None:
        self.currentLocalItem, = self.map.plot(localLon, localLat, 'bo', markersize=15, color='g', label="Local")
    elif localLat!= "unknown" and self.currentLocalItem is not None:
        self.currentLocalItem.set_ydata(localLat)
        self.currentLocalItem.set_xdata(localLon)

    self.connectingLine = self.map.drawgreatcircle(localLon, localLat, remoteLon, remoteLat, lw=3)
person Jaron Bradley    schedule 30.09.2014