1
0
Fork 0
mirror of https://github.com/shouptech/share-a-bike.git synced 2026-02-03 20:39:43 +00:00

Added radius searching

Updated version number to reflect changes
This commit is contained in:
mikeshoup@gmail.com 2010-12-18 22:16:05 +00:00
parent 8b14d149a3
commit b63b493fab
6 changed files with 125 additions and 59 deletions

View file

@ -4,6 +4,8 @@ function MainAssistant(argFromPusher) {
MainAssistant.prototype = {
setup: function() {
Ares.setupSceneAssistant(this);
this.radius = 0.5;
},
cleanup: function() {
Ares.cleanupSceneAssistant(this);
@ -14,6 +16,8 @@ MainAssistant.prototype = {
// Start Spinning
this.showSpinner(true);
// Clear List
this.controller.setWidgetModel("kioskList", {items:[]});
// API URL for BCycle
var url = 'http://api.bcycle.com/services/mobile.svc/ListKiosks';
gpsLatitude = 0;
@ -95,35 +99,26 @@ MainAssistant.prototype = {
return d;
};
var closestKiosks = [];
var nClosest = 5;
var sortByDistance = function(kiosk1, kiosk2) {
var d1 = calcDistance(latitude, longitude, kiosk1.Location.Latitude, kiosk1.Location.Longitude);
var d2 = calcDistance(latitude, longitude, kiosk2.Location.Latitude, kiosk2.Location.Longitude);
// Initialize an empty set of kiosks
for(var i = 0; i < nClosest; i++) {
closestKiosks[i] = null;
}
return d1 - d2;
};
var closestKiosks = [];
// Loop through the kiosks
for(i = 0; i < kioskResult.responseJSON.d.list.length; i++) {
var kiosk = kioskResult.responseJSON.d.list[i];
for(var j = 0; j < closestKiosks.length; j++) {
if(closestKiosks[j] === null) {
closestKiosks[j] = kiosk;
break;
} else {
var d1 = calcDistance(latitude, longitude, closestKiosks[j].Location.Latitude, closestKiosks[j].Location.Longitude);
var d2 = calcDistance(latitude, longitude, kiosk.Location.Latitude, kiosk.Location.Longitude);
if(d2 < d1) {
// Swap
var temp = kiosk;
kiosk = closestKiosks[j];
closestKiosks[j] = temp;
}
}
var d1 = calcDistance(latitude, longitude, kiosk.Location.Latitude, kiosk.Location.Longitude);
if(d1 < this.radius) {
closestKiosks.push(kiosk);
}
}
closestKiosks.sort(sortByDistance);
var kiosks = [];
for(i = 0; i < closestKiosks.length; i++) {
d = calcDistance(latitude, longitude, closestKiosks[i].Location.Latitude, closestKiosks[i].Location.Longitude);
@ -157,5 +152,9 @@ MainAssistant.prototype = {
gps: this.gpsCoord
};
this.controller.stageController.pushScene('mapScene', argToScene);
},
radiusSelectorChange: function(inSender, event) {
this.radius = event.value;
}
};

View file

@ -23,7 +23,6 @@ opus.Gizmo({
},
{
name: "scroller1",
mode: "free",
scrollPosition: {
left: 0,
top: 0
@ -43,7 +42,7 @@ opus.Gizmo({
items: [],
useSampleData: false,
title: undefined,
itemHtml: "<div class=\"palm-row\">\n <div class=\"kiosk_left_col\">\n <div class=\"kiosk_name\">#{name}</div>\n <div class=\"kiosk_address\">#{address}</div>\n </div>\n <div class=\"kiosk_right_col\">\n <div class=\"kiosk_distance\">#{distance}</div>\n <div class=\"kiosk_availability\">#{bikes}B #{docks}D</div>\n </div>\n</div>",
itemHtml: "<div class=\"palm-row\">\n <div class=\"kiosk_container\">\n <div class=\"kiosk_name\">\n #{name}\n </div>\n <div class=\"kiosk_address\">\n #{address}\n </div>\n <div class=\"kiosk_stats\">\n #{distance} | #{bikes} bikes | #{docks} docks\n </div>\n </div>\n</div>",
swipeToDelete: false,
rowTapHighlight: false,
rowFocusHighlight: false,
@ -55,14 +54,87 @@ opus.Gizmo({
]
},
{
name: "panel1",
layoutKind: "hbox",
name: "panel2",
dropTarget: true,
type: "Palm.Mojo.Panel",
l: 0,
t: 391,
h: 60,
h: "120",
controls: [
{
name: "panel1",
layoutKind: "hbox",
dropTarget: true,
type: "Palm.Mojo.Panel",
l: 0,
t: 0,
h: 60,
controls: [
{
name: "findButton",
ontap: "findButtonTap",
disabled: undefined,
label: "Find",
type: "Palm.Mojo.ActivityButton",
l: 0,
t: 0,
h: "100%"
},
{
name: "group1",
dropTarget: true,
label: "",
type: "Palm.Mojo.Group",
l: 320,
t: 0,
h: "64",
styles: {
bgColor: ""
},
controls: [
{
name: "row1",
dropTarget: true,
type: "Palm.Mojo.Row",
l: 0,
t: 0,
h: "auto",
controls: [
{
name: "listSelector3",
value: 0.5,
choices: [
{
label: "1/4 Mile",
value: "0.25"
},
{
label: "1/2 Mile",
value: "0.5"
},
{
label: "3/4 Mile",
value: "0.75"
},
{
label: "1 Mile",
value: "1"
}
],
label: "",
onchange: "radiusSelectorChange",
type: "Palm.Mojo.ListSelector",
h: "48",
styles: {
bgColor: ""
}
}
]
}
]
}
]
},
{
name: "mapButton",
ontap: "mapButtonTap",
@ -70,16 +142,7 @@ opus.Gizmo({
label: "Map",
type: "Palm.Mojo.Button",
l: 0,
t: 0
},
{
name: "findButton",
ontap: "findButtonTap",
disabled: undefined,
label: "Find",
type: "Palm.Mojo.ActivityButton",
l: 320,
t: 0
t: 60
}
]
}

View file

@ -8,11 +8,12 @@ opus.Gizmo({
},
chrome: [
{
name: "header1",
label: "Nearby Kiosks",
type: "Palm.Mojo.Header",
name: "pageHeader1",
title: "Kiosks Map",
subtitle: "",
type: "Palm.Mojo.PageHeader",
l: 0,
t: 0
t: 49
},
{
name: "kioskMap",

View file

@ -1,6 +1,6 @@
{
"id": "com.mikeshoup.share-a-bike",
"version": "0.1.2",
"version": "0.1.3",
"vendor": "Mike Shoup",
"type": "web",
"main": "index.html",

View file

@ -17,5 +17,13 @@
{
"source": "app/views/mapScene/mapScene-chrome.js",
"scenes": "mapScene"
},
{
"source": "app/assistants/preferences-assistant.js",
"scenes": "preferences"
},
{
"source": "app/views/preferences/preferences-chrome.js",
"scenes": "preferences"
}
]

View file

@ -1,27 +1,22 @@
.kiosk_left_col {
float: left;
padding-left: 5px;
.kiosk_container {
padding: 5px;
}
.kiosk_right_col {
float: right;
padding-right: 5px;
}
.kiosk_name {
font-weight: bold;
font-size: 1em;
font-size: 22px;
width: 100%;
}
.kiosk_distance {
font-size: 1em;
.kiosk_stats {
font-size: 16px;
font-variant: small-caps
text-align: center;
width: 100%;
}
.kiosk_address {
font-size: 0.8em;
}
.kiosk_availability {
font-size: 0.8em;
font-weight: bold;
text-align: right;
font-size: 16px;
width: 100%;
color: #616161;
font-variant: small-caps;
}