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
70
71
72
73
74
75
76
77
78
|
# File 'lib/mapplz.rb', line 38
def add(user_geo, lonlat = false)
begin
geo_objects = MapPLZ.standardize_geo(user_geo, lonlat, @db)
rescue MapPLZException
geo_objects = code(user_geo)
end
if @db_type == 'array'
@my_array += geo_objects
elsif @db_type == 'mongodb'
geo_objects.each do |geo_object|
save_obj = geo_object.clone
save_obj.delete(:_id)
save_obj.delete(:lat)
save_obj.delete(:lng)
save_obj.delete(:path)
save_obj.delete(:centroid)
save_obj.delete(:type)
save_obj[:geo] = JSON.parse(geo_object.to_geojson)['geometry']
reply = @db_client.insert(save_obj)
geo_object[:_id] = reply.to_s
end
elsif @db_type == 'postgis' || @db_type == 'spatialite'
geo_objects.each do |geo_object|
geom = geo_object.to_wkt
if @db_type == 'postgis'
geojson_props = (JSON.parse(geo_object.to_geojson)['properties'] || {})
reply = @db_client.exec("INSERT INTO mapplz (properties, geom) VALUES ('#{geojson_props.to_json}', ST_GeomFromText('#{geom}')) RETURNING id")
elsif @db_type == 'spatialite'
reply = @db_client.execute("INSERT INTO mapplz (label, geom) VALUES ('#{geo_object[:label] || ''}', AsText('#{geom}')) RETURNING id")
end
geo_object[:id] = reply[0]['id']
end
end
if geo_objects.length == 1
geo_objects[0]
else
geo_objects
end
end
|