See Timemap, by Nick Rabinowitz: http://code.google.com/p/timemap/ That has the code to show only items from the visible portion of the timeline on the map.
--Mike On Jul 12, 2011, at 9:57 AM, John S wrote: > I'll give you some background on my project... > I'm working on a google maps wizard that does... honestly a bit of > everything. The timeline is just the latest feature. I am looking at > creating something similar to the Timeline project that's built on top > of Simile, but for that project, you have to load the map into the > timeline object, and I'd rather have the map be the base of > everything, and just create my own bridge between the two of them. The > reasons get fairly detailed on this, but it's the best approach I can > take. > > All of the map markers and and event specific items for the timeline > are stored in the database. I make the distinction between map markers > and timeline specific items, because I create map markers with start/ > end dates, but recognize there are times when we'll want to add > something to a timeline that isn't a map marker. These items are > pulled from the database and I build a 2d array of events and markers > for JS. From there, the JS creates the JSON calls to load them into > the timeline. I do it this way because I'm able to dynamically edit > everything without ever having to reload the page. So far, none of > this is the issue. > > The last bit of functionality that I'm looking to recreate is... as I > scroll the timeline, I'd like to have only the items on the top tape > be the ones that are visible on the map, so that as you scroll the > timeline, you'll be able to see the progression of the items move > across the map. Making the markers on the map appear/disappear isn't > an issue, that's definitely easy enough to do, the part that I'm > stumped on is finding an effective way to track the events on the > timeline that are currently visible. > > I understand what you're talking about on the load that it could > create, and that was my biggest worry, but I wasn't sure of a better > approach for it all. As far as the load goes, I don't think I'll even > hit a timeline with more than a couple hundred items on it > realistically, though I'm sure now that I said that, I'll come up with > one that has over 3000, lol. > > This is a pretty winded post, but I think it explains everything in > pretty well detail with the exception of posting sample code, lol. I'd > love to hear some more ideas though. > > On Jul 11, 5:44 pm, Michael Nosal <mno...@mitre.org> wrote: >> John, >> What are you trying to make Timeline do? It would help if I understood what >> you were trying to accomplish. >> Attaching listeners to each individual event is expensive to do, and can >> cause performance problems if done incorrectly. >> >> Timeline does support the ability to add listeners to the individual events >> - the onSelectListener gets fired when you click on an event and the >> eventPaintListeners get fired when the Timeline .paint() is called. >> >> Because of the expense of adding listeners, and the potential for having to >> fire too many listeners, or check too many events, you might look at using >> event delegation instead. Set a scroll listener on a band and let it decide >> what to do based on the time and events shown. >> >> I'm not sure what you mean by having the server side script generate loading >> calls for you. Better to have the server provide the data necessary for your >> event loading, and use the client side javascript to load that data. Keeps >> things cleaner and easier to maintain if you ever need to change formats, >> load order, etc. >> >> --Mike >> >> On Jul 11, 2011, at 5:13 PM, John S wrote: >> >>> I've been hunting around for this, but I haven't been able to find >>> anything yet, and I wanted to see if anyone else had any suggestions >>> for a good way to do this. >> >>> I'm currently loading everything dynamically with JSON calls, and >>> setting a custom class for each item. (these calls are being generated >>> from a server side script that's writing the loading calls for me, so >>> the names are something like, "event26" where the 26 is the event ID >>> in the database.) >> >>> Because of the way I'm doing this I can attach a listener to each >>> event individually, based on the unique class names, but I'm just not >>> sure what to look for as the trigger of the listener. I'd like to have >>> the listener trigger whenever the labels become "visible". I know >>> thats a vague way to describe a trigger, but that's half my problem of >>> coming up with a better plan of attack. >> >>> If anyone has any ideas on how I could go about doing this, it would >>> be a serious help! I don't even need the specific code, just a push in >>> the right direction should be enough for me to go on. >> >>> -- >>> You received this message because you are subscribed to the Google Groups >>> "SIMILE Widgets" group. >>> To post to this group, send email to simile-widgets@googlegroups.com. >>> To unsubscribe from this group, send email to >>> simile-widgets+unsubscr...@googlegroups.com. >>> For more options, visit this group >>> athttp://groups.google.com/group/simile-widgets?hl=en. >> >> > > -- > You received this message because you are subscribed to the Google Groups > "SIMILE Widgets" group. > To post to this group, send email to simile-widgets@googlegroups.com. > To unsubscribe from this group, send email to > simile-widgets+unsubscr...@googlegroups.com. > For more options, visit this group at > http://groups.google.com/group/simile-widgets?hl=en. > -- You received this message because you are subscribed to the Google Groups "SIMILE Widgets" group. To post to this group, send email to simile-widgets@googlegroups.com. To unsubscribe from this group, send email to simile-widgets+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/simile-widgets?hl=en.