Wednesday, July 27, 2005

KMaps - Google Maps on the go on Treo 650, Where.com

[If you are looking for the latest KMaps version, go to http://www.alealea.com]

Make sure you visit Where.com, mobile photo and video sharing service.

Since I use Google Maps often and I use my Treo 650 all the time, I thought it would be nice to have some of Google Maps on my Treo. Google Maps implementation is heavy on AJAX and no Treo 650 web browser to my current knowledge is able to handle Google Maps the way they are handled in the non-handheld browsers (at least my Xiino and Blazer aren’t able to handle them).

Moreover, I don't consider Browser to be an appropriate platform for people on the go who usually need to get information in as less clicks as possible and who operate in such a dynamic environment where usability is paramount. Sure, Browser is a good User Interface option when you are sitting in the chair and operate an input device. However, people on the go need another type of platform that can compute and cache...

The value of Google Maps is not only in map or satellite images they provide but also in Google’s outstanding ability to deliver the precise search results for the less than perfect queries that we often submit. For example, it is enough for me to type “Caffe Umbra Boston” and Google will give me the exact address (including the phone number) of the place together with the several other options.

KMaps is my first take on implementing some of the Google Maps functionality on Treo 650. It is a work in progress and feedback is appreciated. KMaps uses Google Maps search results, directions and images to help me find my way around. I find it extremely useful for finding the restaurants on the go. I can simply enter “Tapas Boston” to get the list and addresses of tapas places around. Then I can get maps and directions to these places on the go. Or, I can simply submit "Franklin St & Congress St Boston" to position myself on the corner of Franklin and Congress Streets in Boston. I have used KMaps very often since I have developed it and I thought it might be valuable to other Treo 650 owners, so KMaps is posted it here for download.

Before you download, please understand that this application is not officially recognized by Google although it relies on Google technologies. Since Google doesn’t have (yet) an official Google Maps port for mobile phones, I am hoping that they won’t ask me to stop offering KMaps for download since it doesn’t compete with any of their products, but fills the current Google Maps void for mobile phones and helps spreading the buzz about the cool Google technologies around instead. KMaps development was possible only for the reason of Google making their technologies so open and easy to use and we thank Google for that.

However, if I receive any email or complaint from Google about this application, I will be obliged to remove it and disable any further downloads! I also notified Google (via email) about KMaps existence.

KMaps is distributed under the Attribution/NonCommercial/NoDerivs Creative Commons license. You may download, use and distribute the application free of charge for non-commercial purposes. You may NOT use it for any commercial purpose.

KMaps is copyright © 2005 by Ivan Mitrovic. This application is NOT officially supported by Google or affiliated with Google in any way. All map tiles and satellite imagery displayed by the application are copyright by Google, Inc. and their partners, and all searches are performed using Google Maps search features. Read Google Maps Terms of Use for more information.

Let me cover myself now...

You are downloading and using KMaps application on your own responsibility and I shall have no liability for loss of time, data, material or financial loss or any other loss caused by using KMaps application.


Installation

KMaps is Java mobile application so you need to have Java installed on your Treo 650. If you don’t have Java installed on your Treo 650, you will have to install IBM Java that is recommended by Palm.

IBM Java implementation, WebSphere Everyplace Micro Environment is available at no cost to customers who purchased a Treo 650 smartphone, a Tungsten T5 handheld or a Zire 72 handheld. Other customers with supported devices can purchase IBM WebSphere Everyplace Micro Environment at Software Connection for $5.99.

Go to http://www.palm.com/us/support/jvm/ , fill in the form, select your device and download WEME571.zip and follow the installation instructions (they are fairly simple). After Java is installed, you can download KMaps Application.

Once you downloaded Java, you may be asked for Midlet URL. Please, ignore this and exit, since KMaps is packaged as any other Palm application. Once you installed Java, simply download KMaps.prc below.

I understood all of the above and I want to download KMaps

Important>> I am sure you'll find your way around the screens with the Menu. However, once in a Map mode, there is no menu available and you have to rely on keys instead: 5 way-nav for walking the map, 5-way nav center to change the zoom level, "B" key to get Back (Exit) from the map, "H" key to return the wanderer home promptly (in case that he wandered far away) and "L" to turn on/off the distance mode between the wanderer and the starting point.

You can also send me a feedback:
Email


This application is tested and used on Treo 650 (since I have it), but I haven’t invested any time into testing in on other Palm devices. I think that you should have no issues running it on Treo 600, Tungset T3, Tungsten T5 or Tungsten C as long as you have Java installed. I have actually got update from a friend of mine, Coty Rosenblath who tried it on his Treo 600 and said that it had worked OK. However, I can’t guarantee it since I haven’t run it. I would appreciate if you send me a note on how it works in case that you try it on other Palm models.

How to use KMaps

Click on KMaps icon to start KMaps.




The first time you enter KMaps you will have to set some settings.



You can change Settings later on if needed. Select your default distance unit, miles or kilometers (some of us still have trouble adjusting to miles even after so many years in US). Set your average walking speed in unit per hour. By default this is set to 3 miles per hour. Default zoom is set to 2. Google zoom ranges from 0 to 14. “Show Latitude and Longitude”, if checked, will display Latitude and Longitude information on the map screen as you are moving through the map. You can simply accept the default settings to begin with by clicking on Save and then change them later if you need to.

Type your search term and click Go button.



KMaps will process Google Search results and let you select one of the results found by Google. The results are as they appear when search is performed on http://maps.google.com. If you can't find your location on http://maps.google.com, you won't find it when searching on KMaps either.



Navigating the Map

You will get a map of the selected address by clicking Map button. Map will be downloaded from Google.



Map will open at the default zoom that was set in your initial Settings. Depending on whether “Show Longitude and Latitude” setting was checked or not, you may see the current Latitude and Longitude information displayed.



Click on the Pin image on map any time to remind yourself on the exact address of the place.



Use 5-way navigation to move around the map. You will see a small character that is going to do a mapwalking in your stead and that you can move around using 5-way navigation.



Since this is a handheld device implementation, it makes no sense to load the whole huge Google Map at once, like we do it on Desktops or Laptops, but rather Google Map tiles are loaded as needed, on demand, to save the bandwith. If you want your wanderer to “discover” the area that is not on the map, simply walk him until he hits the wall and new map tiles will be automatically downloaded from Google, filling the area with the new map. You can then continue walking the newly discovered lands…



Hit “L” (to remember, L=Line) button on keyboard to see the walking distance from your point of origin. In addition, the time needed to walk the distance is calculated (taking in account the average walking speed you set in Settings). In this case, distance is 0.255 miles and the time needed to walk that distance is 5 minutes.



Press center button on 5-way navigation to change zoom. + for Zoom In, - Zoom Out Use 5-way navigation to focus on Zoom Gauge and then change the value using left or right 5-way navigation buttons.



If your character walked far away and you want to get back to the starting position, hit the “H” button on the keyboard (to remember, H = Home).

Hit “B” to exit the Map screen (to remember, B = Back)

Getting Google Maps Directions


Start by entering the search term (it doesn’t matter whether this is your start or end address, you can indicate that later).



Click Go button to get the exact location.



Notice “From” and “To” buttons. By clicking on “From” button, you indicate that the selected address is to be the starting point. Accordingly, by clicking on “To” button the selected address becomes an end point. Since I want to get the directions to “Caffe Umbra” from where I am standing now (252 Hannover St Boston), I hit “To” button. Enter another search term to get Google Search Results.



Click Go button to get Google Maps Search Results.



Click “From Here” button to get the directions from 252 Hannover St to Café Umbra in Boston. Scroll down to see the complete directions.



Once Directions are displayed you can click on Reverse to get the reverse directions.

You can also save directions to open them later.



You can open saved directions by selecting Open Directions from menu. For the moment, you can save only one set of directions, but I’ll add saving more of them soon.



Again, feedback on this application is appreciated and I would be curious to see if how it works on Palm devices other than Treo 650.

Cheers,
Ivan

39 Comments:

Anonymous Coty Rosenblath said...

Ivan, you rock! It works seemingly perfectly on my 600. Alas, I was hoping for an excuse to upgrade, but now I won't have to figure out how to slip it past my wife.

9:43 AM  
Anonymous Jordan said...

Please, Please Please integrate this with Google Maps GPS!!!!

10:11 AM  
Blogger Sung said...

This is terrific! Thank you so much. I have however having some bugs. After playing around, going off the tile and having the maps update, I can't access using any of the key shortcuts such as H, L, and B. The zoom works, but still the keys don't register. I'm on a Treo 650, ROM update 1.3.1

10:33 AM  
Blogger Key said...

Like sung said, hot keys don't appear to work on my 600 (cing)

The find and inital maps seem to work fine. what a cool app, It rocks!

11:39 AM  
Anonymous damage_inc said...

Ivan, This is awesome. What a great application, keep up the great work.

12:29 PM  
Blogger Josh said...

Ivan, great job. I don't think the Google people will mind this one bit since they're not going after any of the mashups on the web (so far). Are you using the official GMaps API? Also, do you plan on keeping the app free and/or open sourcing it?

Keep it up. I love it.

1:24 PM  
Blogger Ivan said...

KMaps doesn't use offical Google Maps API. Google Maps API is Javascript based API and being Javascript, it can only be used within a browser. Unfortunately no handheld browser (to my current knowledge) supports Javascript API that Google based their maps on. Google Maps are heavy on AJAX and XML/XSLT processing and I guess it is tough for handheld browser vendors to support that at the moment. Hence KMaps to fill some of the void in a lightweight way. On the other hand, I actually, over the time found that I prefer to have specialized applications, adopted for mobile phone, that talk to web instead of accessing them through browser in a PC/Mac way...

1:36 PM  
Anonymous Chiru said...

Ivan, This is the best app for my Treo. I use Treo600 and everything seems to work fine for me. Keep up the good work!!

1:59 PM  
Anonymous Anonymous said...

this is absolutely the coolest thing since sliced bread. i always hoped i could use google maps with the treo. sweet. keep up the good work.

3:48 PM  
Blogger alex_mayorga said...

Ubber Cool Ivan. It souinds great. I've got some fine java developers in "boxes" round mine and I would love to have some project to polish my own Java skills. So feel free to ask if you need some people to co-develop, test, one guy has a Zire 72 and I've got a 600 myself. Sadly I wasm't abble to download this precious little app.
So here comes my first contribution, release it in gnutella or something like that.

Regards and keep the excellent work!

4:05 PM  
Anonymous Bitt said...

Everything seems to work fine on my 600, as well. Here are a few minor points. The Launcher icon is very ugly on the 600. I assume that some sort of dithering is going on and it looks more like a corrupt image than a brick wall. The same sort of thing seems to happen to the traveller. If I hit them menu button on the initial page the hit right, then hit left, it brings up the menu on "Menu", goes to "Help", then deselects the menu. I have to hit left again to get back to "Menu". Silly, but a bug nonetheless. Also, the coordinates and walking line info don't show up. I assume they're off the bottom of the screen. That's all I see so far. Snazzy, though.

Oh, and the directions are awesome.

5:08 PM  
Anonymous Anonymous said...

This is awesome! Only one thing missing...I'd love to be able to PASTE into the entry field so I don't have to manually enter the address of my destination if I've got it in a note or contact.

:)

5:34 PM  
Blogger O'Hill said...

Great App!! Whenever my funds get into PayPal, I'll be donating some $$.

I do have one request...what's the chance of enabling the maps to be scrolled by dragging using the stylus/finger along with the 5way?

12:16 AM  
Anonymous Craig said...

Ivan,
Nice app, just a request for a (hopefully!) simple enhancement. How about an option to enable use of a different Google map instance (ie. maps.google.co.uk) as the default maps ...

2:54 AM  
Anonymous Carlo said...

Ivan, nice job!
I'm getting an error message once I ask to download the map:
"Error while loading map: java.io.IOExcepion"

what I'm doing wrong?

4:13 AM  
Blogger Ivan said...

I'll play with maps.google.co.uk. However, I was talking to some UK guys about this and maps.google.com works for them when they include UK in the address. In any way, this switching of map provider from maps.google.com to maps.google.co.uk shouldn't be difficult and I'll add that to Settings...

Here is a post from one of UK folks:

"You are right, after a little bit of playing around with Google maps, I found that if I use the format "business type town,uk" then it will work."

6:41 AM  
Blogger Ivan said...

Either you are trying the address for a place that is not mapped by Google e.g. trying to get a map of a place outside of USA or UK (since I think Google covers USA and UK only for the moment). If this is the case, try with some USA address first, just to validate that it is working.

However, if your location is mapped by Google then your map tile settings are too large for your connection type. If so, try to decrease the number of tiles. Try with 1 X 1 first and then gradually increase until you get the best map size for your bandwidth.

>>Ivan, nice job!
>>I'm getting an error message once I >>ask to download the map:
>>"Error while loading map: >>java.io.IOExcepion"

>>what I'm doing wrong?

6:45 AM  
Anonymous Anonymous said...

looks good but when hitting center button for zoom level cannot get back to the map hitting ok or cancel just locks up there

9:43 AM  
Blogger susan said...

Works good on my 600... all the hot keys are fine but I haven't quite conquered walking into the wall yet. So far no new map (or extension) but it could be the way I'm walking... Everything else works just as you describe. Very excellent. Thank you.

11:50 AM  
Blogger Tim said...

This is a great app! I'm having a problem zooming, though. When I try to zoom in, my 650 hangs. Anybody else seeing this?

12:38 PM  
Anonymous John Mora said...

Works great on a Sprint Treo 600. The little man is funny.

4:08 PM  
Anonymous gindu said...

Great job, Ivan! I'd like to report that it works well on a Tungsten T3 with Websphere Java ME 5.71 - even the hotkeys work (either by graffiti or with the virtual keyboard)!

One thing I'd humbly wish for:
Saving of maps: I know this depends on the memory available, but it should be possible to cache at least the last few downloaded tiles - so that next time you look at the same location, you don't have to download (and wait for) them again.
An external solution would be to allow screen shots to be made by an external program - I tried this with BugMe!Notepad, but DA applications are not accessible when KMaps is running.

Anyways, great job - this is an awesome program. Now I wish I had a Treo to use it on the road! ;-)

5:16 PM  
Anonymous Anonymous said...

Two suggestions, both of which would make it more like Google maps on the web.

First is to allow tap and drag to move the map around, like you can do with the mouse on the web page. The 5-way scrolling is fine for walking the little guy around, but it's slow and sometimes you just want to get a sense of the area.

Second is to load adjacent tiles in the background. Anywhere there's exposed brick, there should be an additional tile loading behind the scenes and being filled in when its done. Determine the order to load them in by their distance from the guy, so the closest ones load first.

Other than that, great work!

4:12 AM  
Blogger Carl said...

Nice app. Got a error when testing a short distance directions search. Error while getting directions: java.lang.StringIndexOutOfBoundsException

9:54 PM  
Anonymous paulhoop said...

Ivan. Great app!

I do see some memory issues. I am not super technical on Palm. But it seems like KMaps is not letting go of some memory. I have a fairly memory intensive Treo 650 w/GoodLinks, Docs to go. I believe that everything that can be moved to the card has been. KMaps is moved, but Java is not. I have over 5.7Meg left when I do info and use DBCache to clear memory. Everything seems to work fairly fine. Very few automatic soft resets and very few aps reporting out of memory, until I use KMaps. Then Blazer won't even load, with an out of memory error. Filez won't load.. Something about can load card app into phone memory.

Let me know what else I can report to you if you need any more information.

11:49 AM  
Anonymous Anonymous said...

I now have www.alealea.com dedicated to KMaps

the above link doesn't appear to work

1:38 PM  
Anonymous zforce said...

I thought that the IBM Websphere Micro-Environment did not support JPEG and GIF images. Can you tell me how you got this to work?

Thanks

2:38 PM  
Anonymous zforce said...

FYI.. the download link is broken.

2:50 PM  
Anonymous Alan said...

This is great work, Ivan.

I have a request... how about making a Google Earth version?

(I know this would probably take a long time to do, but it would be soooo awesome!)

8:50 PM  
Anonymous joem123 said...

I have been very satisfied with kmaps on my 650.. i just recently upgrade to the new version and i get an error.
javax.microedition.io.file.FileConnection

i loaded J9JavaVMMidp20.prc and still have the error..

Help.. I need my kmaps

8:28 AM  
Blogger Ivan said...

In KMaps_1_2.zip there are 3 prc files. KMaps.prc, fileconnect.prc and
pimop.prc. You need to have all 3 installed. You are missing
fileconnect.prc. Just install all 3 of them...

Ivan

8:42 AM  
Anonymous joem123 said...

ivan i have loaded the following files onto the card...

fileconnect.prc
kmaps.prc
pimop.prc
J9JavaVMMidp20.prc

still getting error:
javax.microedition.io.file.FileConnection

HELP! i need my kmaps!

8:52 AM  
Blogger Ivan said...

Try to load only KMaps.prc on the card to begin with and load all other files to internal memory. Then, if it works, try moving one by one to see what can run from the card. I am not sure if J9JavaVMMidp20.prc can run from the card, too... Try putting them all, except KMaps.prc, back to internal memory and see how it goes.

Ivan

9:13 AM  
Anonymous joem123 said...

Ivan - Here are the details of the error..

java.lang.NoClassDefFoundError: javax.microedition.io.file.FileConnection
at java.lang.Class.verifyImpl(Native Method)
at java.lang.Class.verify(Unknown Source)
at java.lang.Class.initialize(Unknown Source)
at b.d.<"init">(Unknown Source)
at b.d.<"init">(Unknown Source)
at com.ivan.gmaps.KMaps.startApp(Unknown Source)
at javax.microedition.midlet.MIDletAccessor.startApp(Unknown Source)
at javax.microedition.lcdui.AppManager$1.run(Unknown Source)

9:13 AM  
Anonymous joem123 said...

ok ivan... works ok when all on internal memory.. I'm still not sure which files can be transfered over to card..
thanks for your help!..

9:52 AM  
Anonymous Miguel said...

Will I be able to specify a proxy server to access? I have a cheap t-mobile GSM data plan to get to the internet, but it works with a proxy server.

10:33 PM  
Blogger Ivan said...

Yes. Go to "Prefs". Find "IBM and Java". Click on it and open a screen where you will be able to enter proxy in the following format:

ip-address:port

e.g.

212.235.223.123:8080

10:38 PM  
Anonymous Anonymous said...

Ivan,

I just discovered Google Maps which I think is much superior to yahoo maps. I immediately tried it on my Treo 650. It said, not enough memory, or something like that. I went to Google and typed Google maps for Treo 650. KMAPS came up. What a wonderful idea! I downloaded and it seems to work fine. Next week I will use it in San Francisco where I will be vacationing. I will let you know how it performs.

Thanks. I am also donating some money for your effort.

4:52 PM  
Blogger Average Joe American said...

Am I the first to try it on a Zire 72? I don't get any map display, just a bunch of bricks with a pointer in the middle. I have java, and all three KMaps files installed in internal memory, and I'm using my home broadband connection with Softick PPP to connect. Any suggestions?

1:23 PM  

Post a Comment

<< Home