Hi Rod, The app I wanted to develop was to have GPS and mapping as its beginning basic features. Later you'll see I began interfacing it with Google Maps and Google+ Places because it gave blind users a much easier interface, and because all of these Google features have GPS locations as part of their functions or supplied data.
The app creates 2 databases: one for your points of interest (a GPS location with a name and a category to describe what type of place it is), an address, set of comments, and an indication if its sharable with others. The other database is for your "reminders". The reminders are location-based, and linked to the POI table: that is, they can do various things for you if you have a laptop or ultrabook or netbook with a GPS receiver. The app constantly compares your current position against any reminders you've created which are linked to POI locations. If you come within a specified distance, travel time, etc. from a POI location tied to a reminder, the app will do something. If the reminder is your bus stop for instance, whenever you come within 1 minute of travel (at your current speed) it could speak something, sound a tone, and do this just once or until you press something to quiet it. You can also create reminders which occur only once: such as if you get near Radio Shack, a reminder could tell you to pick up new headphones. Cool enough, but I wanted to do more, so I looked at Google. I found for instance, instead of having a user go to a place to get its GPS location in order to create a POI for that place, Google provides a service where you can enter an address and it will give you the approximate GPS location for that address (called reverse geocoding). I added this to the dialog for creating a POI, and now you no longer need to be at a place in order to add it as a point. Google goes much further though: I can give it the address you entered, and get from it a list of places (in increasing distance) of all businesses and other types of locations that Google knows about. Not only can you start with an address, but you can specify part of the name; keywords for the types of locations you want to see, and other search criteria. And so, if you wanted to add an ATM as one of your points, which you know was somewhere near the grocery store, you could enter the address of the grocery store in the dialog to add a point, click on the command button to get near-by locations from Google, and enter ATM as a keyword. The returned list of locations from Google will be ATMs, in increasing distance from the address you started with. Not only will the list show you the name and address of each ATM, but since it gives me its GPS location, and I have the GPS location of the address we started with, I can tell you for each list entry its relative location to you (such as 500 feet north, or 2 miles southwest), thus helping you find the one you wanted to add. You select it and it's added as a point in your database. One last nice feature: we don't have to start by you knowing an address; you can pick any point in your database to start with, and Google can use its GPS location as the starting point for your search; so you can find almost anything by just knowing something about what it's near to. Even though I keep saying Google; all of this is done over the internet (using XML) and with the user in an app's XML dialog, so no need to negotiate a difficult web interface. I looked further at what Google can do, and one of the pieces of info it gives back to me for any place is an http address for a "Google Place" web page, so I add this to the point database, and give you a command button to click on to go to this page. This page will tell you what kind of place this is, what type of business, show you any reviews or comments from others, and even show you the hours of operation. It also will show you any "events" which have been entered into Google for this location (such as a sale or a party? This isn't clear). Google also gives me the official web page of this location, and so I store it in the database, and provide a button for going to its "official" web site. I now added an app menu which allows you to bring up a list of all the points in your database, sort and filter them as you like, and then go into any of them to use them to see what's near-by, go to its Google Places page, etc. It will also tell you where a given point (or one associated with a reminder which was just triggered for you) is, relative to your current location (such as the bus stop being 500 feet to your north). The next feature I found from Google is that it will give you directions from one place to another; and you can specify whether you want driving directions, walking directions, or directions which make use of public transit. I added this as an app menu choice, and I allow you for both the "from" and the "to" location, to use a point from your database, an address, or your current GPS location. When you have specified your "from" and "to" locations, you can click on the type of directions that you want, and they will appear in an editbox on this dialog; no need again for a difficult web page interface. I expect the directions to be popular (even though not all cities have the public transit option available). Right now I'm adding the ability to import a GPX file of points (a kind of universal format for exchanging points), and the ability to export one from your points as well. You can see (I hope) though that I've got a lot of features, but not necessarily a cohesive structure designed to hang them all on. I'd like to be able for all blind users to easily share points among themselves (the way users of the barcode scanning application from the A.T. Guys share barcode data), but I'm not sure what else it should do. Is this too much already? It looks like Google has further features (such as the ability for a user to add a Google Place if it doesn't have one, or for users to add "events" to a Google Place), and to search for places when you don't know anything about where it is (and so you can just type in "indian food in Tallahassee Florida"). It needs another app I wrote named GPS, which is a shared object library, and so it looks to see if you've installed this app, and if you haven't it offers to automatically download and install it for you. Also, it makes use of a feature from Windows 7 and Windows 8 called the "Location Sensor API". This reports your position to programs, even if you don't have a GPS receiver connected. It can often get this from your ISP or the wifi hotspot you're connected to. Newer GPS receivers also come with drivers which report your position to the Windows Location Sensor. This app however will work on any version of Windows, and you can buy a GPS receiver for around $50 or $75 (I've got a rechargeable Bluetooth one) which can figure out your position in 30 seconds or so. The app keeps you informed of how your GPS receiver is doing (whether it has a position, etc.) with various sound effects. Here is where I am at the moment, and hopefully opinions of others will help shape the app. I'd like for it to be useful enough to be a selling point for WE owners (to help users consider switching screen readers). Maybe it can be an example to other scripters of how to interface with web sites via XML, or maybe it should be encrypted to keep others from copying it for other screen readers (I'm not sure about this)? I really want it to be available to other scripters. Even the name is up for discussion. Obviously anyone who wants to try it should realize it's not even beta software yet. Chip [email protected]
