/
app_7_1.js
159 lines (142 loc) · 4.97 KB
/
app_7_1.js
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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
Titanium.UI.setBackgroundColor('#000');
function get_lang(){
var lang = Ti.Platform.locale;
if(lang == 'zh_hans'){
lang = 'zh-CN';
}
if(lang == 'zh_hant'){
lang = 'zh-TW';
}
return lang;
}
var tabGroup = Titanium.UI.createTabGroup();
var win1 = Titanium.UI.createWindow({
title:'Tab 1',
backgroundColor:'#fff'
});
var tab1 = Titanium.UI.createTab({
icon:'KS_nav_views.png',
title:'Tab 1',
window:win1
});
var search= Ti.UI.createSearchBar({
hintText:'住所を入力',
showCancel:true
});
win1.titleControl = search;
var map = Ti.Map.createView();
var navi_button = Ti.UI.createButton({
title:'道案内'
});
var start_point = {};
var destication_point = {};
navi_button.addEventListener('click', function(){
if(destication_point.latitude){
var lang = get_lang();
var url = "http://maps.googleapis.com/maps/api/directions/json?origin=" + start_point.latitude + "," + start_point.longitude + "&destination=" + destication_point.latitude + "," + destication_point.longitude + "&sensor=false&language=" + lang;
Ti.API.info(url);
var navi_http = Ti.Network.createHTTPClient({timeout:10000});
navi_http.onload = function(){
var res = JSON.parse(navi_http.responseText);
var route = res.routes[0];
Ti.API.info(route);
var steps = route.legs[0].steps;
Ti.API.info(steps);
Ti.API.info(steps.length);
var points = [];
for(var i = 0; i < steps.length; i++){
var loc = steps[i].end_location;
var loc_data = {latitude:loc.lat, longitude:loc.lng};
points[i] = loc_data;
}
map.addRoute({name:'道順', points:points, color:'Red'});
};
navi_http.open('GET', url);
navi_http.send();
}else{
alert('現在地と目的地がセットされていません');
}
});
win1.leftNavButton = navi_button;
Ti.Geolocation.purpose = "アプリで利用できるGPS機能の理解を深めるため";
var current_position = null;
Titanium.Geolocation.getCurrentPosition(function(e){
if(e.error){
alert("申し訳ございません、位置情報を利用することができません");
}else{
current_position = e.coords;
var lang = get_lang();
var url = "http://maps.google.com/maps/api/geocode/json?latlng=" + current_position.latitude + "," + current_position.longitude + "&sensor=true&language=" + lang;
var http = Ti.Network.createHTTPClient({timeout:10000});
http.onload = function(e){
start_point.latitude = current_position.latitude;
start_point.longitude = current_position.longitude;
var response = JSON.parse(http.responseText);
var annotation = Ti.Map.createAnnotation({
animate:true,
pincolor: Titanium.Map.ANNOTATION_GREEN,
title:'現在地',
subtitle:response.results[0].formatted_address,
latitude:current_position.latitude,
longitude:current_position.longitude
});
map.annotations = [annotation];
map.mapType = Titanium.Map.STANDARD_TYPE;
map.animate = true;
map.region = {
latitude:current_position.latitude,
longitude:current_position.longitude,
latitudeDelta:0.01,
longitudeDelta:0.01
};
map.regionFit = true;
map.userLocation = false;
win1.add(map);
search.addEventListener('cancel', function(e){
search.blur();
});
search.addEventListener('return', function(e){
var address = e.source.value;
search.blur();
var lang = Ti.Platform.locale;
if(lang == 'zh_hans'){
lang = 'zh-CN';
}
if(lang == 'zh_hant'){
lang = 'zh-TW';
}
var forward_url = 'http://maps.googleapis.com/maps/api/geocode/json?address=' + address + '&language=' + lang + '&sensor=false&mode=walking'
Ti.API.info(url);
var forward_http = Ti.Network.createHTTPClient({timeout:10000});
forward_http.onload = function(e){
var response = JSON.parse(forward_http.responseText);
var geo = response.results[0].geometry.location;
destication_point.latitude = geo.lat;
destication_point.longitude = geo.lng;
var forward_annotation = Ti.Map.createAnnotation({
animate:true,
pincolor: Titanium.Map.ANNOTATION_RED,
title:'目的地',
subtitle:address,
latitude:geo.lat,
longitude:geo.lng
});
map.addAnnotation(forward_annotation);
map.setRegion({latitude:geo.lat,longitude:geo.lng, latitudeDeta:0.1, longitudeDelta:0.1});
map.addRoute({
name:'道順',
points:[{latitude:geo.lat, longitude:geo.lng}, {latitude:current_position.latitude,longitude:current_position.longitude}],
color:'Green'
});
};
forward_http.open('GET', forward_url);
forward_http.send();
});
};
http.open('GET', url);
http.send();
}
Ti.API.info(e);
});
tabGroup.addTab(tab1);
tabGroup.open();