-
Notifications
You must be signed in to change notification settings - Fork 0
/
poi_base.py
69 lines (57 loc) · 1.6 KB
/
poi_base.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
import geometry
from base import pyrouteModule
import listable
class poi:
def __init__(self,lat,lon):
self.lat = lat
self.lon = lon
self.title = 'Untitled at %1.3f, %1.3f' % (lat,lon)
def formatText(self):
return(self.title)
def distanceFrom(self,pos):
a = (pos['lat'], pos['lon'])
b = (self.lat,self.lon)
self.d = geometry.distance(a,b)
return(self.d)
def __cmp__(self, other):
return cmp(self.d, other.d)
class poiGroup(listable.listable):
def __init__(self,name):
self.items = []
self.name = name
self.sortpos = {'valid':False}
# Functions to implement the listable interface
def numItems(self):
return(len(self.items))
def getItemText(self,n):
return(self.items[n].title)
def isLocation(self,n):
return(True)
def getItemLatLon(self,n):
item = self.items[n]
return(item.lat,item.lon)
def sort(self,pos):
if(pos == self.sortpos):
return
self.sortpos = pos
print "Sorting"
if(pos['valid']):
for i in self.items:
i.d = i.distanceFrom(pos)
self.items.sort()
if(0):
for i in self.items:
print "%1.3f" % i.d
class poiModule(pyrouteModule):
def __init__(self, modules):
pyrouteModule.__init__(self, modules)
self.groups = []
self.draw = True
def sort(self, pos):
for g in self.groups:
g.sort(pos)
def report(self):
for g in self.groups:
print "=== %s ===" % g.name
for i in g.items:
print "%1.3f, %1.3f = %s" % (i.lat, i.lon, i.title)