Archive for the ‘AJAX’ Category

Gmap Uploader now supports DeepZoom/Seadragon

Sunday, December 14th, 2008

Now, all images that have and will be uploaded with Gmap Uploader will be available via the Deep Zoom URL format which means you will be able to view your images with Seadragon AJAX in your browser, and Seadragon Mobile on the iPhone.

So, either upload your image to Gmap Uploader, or go to the URL of a Gmap Uploader map you already have. After its done processing, at the bottom there will be a Deep Zoom URL. You can use this URL with either Seadragon AJAX, or Seadragon Mobile.

For Seadragon AJAX, I recommend putting this URL in the Embed The Viewer tool.

Once you’ve downloaded Seadragon Mobile to your iPhone, and opened it, follow these steps:

  1. Press the plus button in the bottom right of Seadragon Mobile.
  2. Select “Deep Zoom Content”.
  3. Pick a name, for example, “Awesomeness”.
  4. Enter the Deep Zoom URL from Gmap Uploader.
  5. Press the “Done” button.
  6. Be amazed.

Adding this feature probably means I need to change the name of Gmap Uploader. Any suggestions?

Google Gears on the iPhone?

Tuesday, June 12th, 2007

I really hope that Google Gears will work soon on the Apple iPhone. That would be sweet. Basically, if you don’t want to pay for a data plan, it would allow you to sync your data when you have a wifi connection, and then use that data later when you don’t have a connection.
The application I’m thinking of is a grocery list. So, you and your family or housemates could edit your list on the web, on any computer or cell phone. Before you leave, you sync your iPhone with Google Gears over wifi to get the latest list. Once you are at the store, you take out your phone and use the grocery list web application just like normal, without an internet connection.

Things I Wish Existed: Wiki Drawing Tool

Monday, June 4th, 2007

The name pretty much says it all I think: wiki drawing tool. Basically, I want a website where I can go and draw something, then other people can come in later and edit it. Just like Wikipedia, all changes will be saved, and each drawing would be able to be instantly reverted to a previous version.

My Web Mapping Background

Tuesday, May 22nd, 2007

I originally wrote the following as my biography for WhereCamp, an unconference for geo-hackers. I realized that readers of my blog might be interested in this too. Also, if you are going to be in SF next week for Where 2.0, Google Developer Day, or WhereCamp, please contact me if you’d like to meet up.

Hi! I’m Kyle Mulka. I just graduated from the University of Michigan with a degree in Computer Science. When the Google Maps API first came out, I was really excited about the possibilities and started hacking with it right away. I built a bunch of stuff, some of which you can see on my Google Maps page.

The semester after that summer, I started a class project which was basically Plazes but with more detail inside of buildings at our University. We called it liveUgli. UGLi is short for undergraduate library. Basically, we wanted the site to be a representation of what was currently happening in the library: what people were studying, which groups were meeting, if someone was planning a study break for lunch or frisbee or whatever. It would allow people to find study groups and meet up with friends and classmates. They would be able to more easily discover the people near them, but not close enough to see.

I believe there were many reasons which made liveUgli unsuccessful, the main one being that no one was using it, so the site was useless. This is a problem with all social networking sites. You need a critical mass of users for something like this to be successful. But, beyond that, there was no automatic detection of location (yet), and even the manual method was kind of difficult for users. Many people told me that they didn’t study in the UGLi, so the site was useless to them as well.
I set out to create a system by which we could easily add new location names and maps and floor plans to the system. I ended up calling this system Cartiki which stood for cartography wiki, or map making wiki. Not only would we, the administrators of the site be able to add locations, anyone could add locations in wiki fashion. I’m almost to the point where I’m ready to release Cartiki as a stand alone web application to be used to help people find locations, both on a regular Google Map, and on uploaded floor plans of buildings. This would be ideal as a university/corporate campus room finder.

The ability to upload custom maps and floor plans comes from another system I built for this purpose called the Gmap Uploader. This can also be used separately from Cartiki and liveUgli, especially for viewing high resolution photos.

Calendar + AJAX + iCal + Palm Desktop = Amazing!

Friday, April 21st, 2006

Title says basically what I’m looking for. I’m looking for a web based calendar which will publish and subscribe via iCal and will also sync with Palm Desktop on my laptop.

Why hasn’t there been a good AJAX calendar that you can use to publish and subscribe to calendars via the ical standard? Right now, the best I’ve seen is Planzo, but it has yet to publish or subscribe via iCal. Next on the list to evaluate is AirSet, which looks promising, but their site is so full of features that it is hard to get to the simple stuff you really want.

One really good use of this type of software is to plan semi-weekly meetings between a group of about 10 people when individuals schedules sometimes change depending on the week, but for the most part stay the same.

I started to do this with Mschedule a couple summers ago, but the only data I drew from was from the University of Michigan’s schedule of courses and individual students’ schedules that we’re imported into the site by simply copying and pasting from the official site hosted by the University called Wolverine Access. It was my first web application, so I didn’t really know what I was doing with PHP, CSS, or even HTML div tags (I used tables for all the layout).

Internet Research: Calendaring

Sunday, February 5th, 2006

I just did a bunch of internet research, as I like to call it, on a whole varity of calendaring programs. Clients, Servers, Javascript, AJAX, Outlook, iCal, Mozilla Calendar, Publish/Subscribe, etc. So, if you are into that kind of thing check this list out. The top few are the ones that excited me the most.


DeskNow – mail, instant messaging and collaboration tools
Sharing Microsoft Outlook Calendar and Contacts
Hula Project – Hula
iCal Exchange
iCalShare – Share Your iCalendars!
eventSherpa – iCal for Windows
Web Calendar Software – iCal – Event Calendar
Web Calendar Server – Calcium from Brown Bear Software
nat friedman
Calendar – Standards Based Calendar Client Project
UW Calendar Home Page
Sambar Technologies Home Page
Internet Calendar Server & Calendar Hosting
Sun Java System Calendar Server Publish event schedule on the Web
Building a Simple Calendar Server with Fedora and WebDAV – FedoraNEWS.ORG
iCal Web Calendar Server download and review – web based calendar/scheduler from SnapFiles
CalDAV Projects

Magic Bus

Saturday, December 17th, 2005

UPDATE: This post and Google Map have been deleted because I really shouldn’t have been medling with the bus project in the first place and because someone thought I stole their ideas/project which was not the case… I was just trying to improve upon what they had already worked on. My sincerest appologies to anyone involved especially Mike Bommarito who deserves credit for working on the Magic Bus Google Map and to David Harris for showing us the demo. Awsome stuff!

UPDATE: So, I found out that Mike really isn’t on the team. I went to one of their meetings and they pretty much told me I could work on the project. Awsome. So, keep an eye out for the news.

UPDATE: Finally! Here it is:


Sunday, October 23rd, 2005

So, are we seeing the end of the operating system age? Will most applications no longer be tied to an operating system? Will web applications finally be cross-platform? Will the network be the computer like Sun has said for the longest time? How much processing and data can we distribute through the network?

These are some questions I’ve been asking myself in order to predict what the future of computing will be and where to position myself to get the most out of it. Check out this article out:


Compile to Javascript??

Saturday, October 15th, 2005

Whoa… I just found this, and if it does what it sounds like it does, that’s amazing! This says it will compile a high-level language of your choice such as Java and C++ umong others into Javascript and HTML to run in a browser. Also, you will be able to unplug your new web application from the net and simply run the http server on localhost.


Solution to Huge Numbers of Overlays with the Google Maps API

Friday, August 5th, 2005

Cross-posted to the Google Maps API discussion group (click here):

There has been a lot of discussion on a large amount of overlays on a single Google map. Different hacks have approached this problem in different ways. Many sites do not even deal with it because they can’t, don’t know how, or don’t want to.

The capability to display a huge amount of overlays I believe should be handled somehow by the Google Maps tool itself. However, since most, if not all of Google Maps is written in JavaScript this may be a problem. The JavaScript would have to load a large file and then query it. For JavaScript, this would take a long time if the file was large.

I’m going to explain a solution which is derived from what I’ve seen on a few different sites, and what I think would be the best. It uses PHP and MySQL, but I’m sure you could substitute in other technologies like ASP and Access, or JSP and Oracle for example. What would be an even better thing to do would be to figure out how to get a real GIS map server (Google it) to interact with Google’s native overlays, but for those of you who just need a simple solution, here it goes.

You would use PHP along with a MySQL table full of Overlay information. Then, the JavaScript would call a PHP function with the current bounds of the map which is represented by two points. It doesn’t matter how you call the function, just find a way. Then, PHP would use these two points to make a MySQL query on your table of points and only return those in the specified bounds back to the JavaScript. Then, the JavaScript would clear the map of markers and then redraw only the ones which are returned by your server (the ones that are currently in bounds).

I would appreciate questions and comments as I go ahead and implement this solution. Maybe someone has already done exactly this and open sourced their code. If so, I would love to hear about it to save me time.

-Kyle Mulka


I forgot to discuss the problem of having too many overlays within a given bounds. That is kind of important. Oops. For example, if you are zoomed out all the way, your JavaScript will be handed all of the overlays in the world, and this will not help performance AT ALL for higher zoom levels. So, I’ll outline a general solution to this problem.

You need to organize overlays into groups. Visually, on a map, without knowing anything about the underlying data, I see only one general solution. If anyone has any others, I’d love to listen.

You would have an algorithm which reduces the number of overlays to display by automatically grouping overlays based on location. There are tons of ways to do this. I think the easiest way would be to split up the given bounds into four squares, then check each square to see if there are still to many markers in that square. If a square still has too many markers, simply divide that square into another four squares and count again. All of this information could be calculated ahead of time and stored in a database for painless and fast retrieval when queried. This is almost exactly what Google does with its map tiles. Each zoom level simply divides each tile (a square) into four smaller squares and displays the new four tiles. This is how Google Maps itself is so fast. They can simply save all of these tiles in a database or as image files for absolutely painless retrieval. There is almost no processing required on the server. It is extremely scalable.

Another improvement to this system may be to use the same system that Google uses to keep track of tiles. The tiles are cached on your computer, and when you go one way on a map, then go back, it doesn’t have to query the server for those tiles. It would be nice if you could some how cache the marker information in the browser as well.

-Kyle Mulka