It'll work with json_string, or anything else that inherits from TimeMap.loaders.remote. But the JSONP loader works differently - it adds a script tag to the document, effectively running the remote file as a script; so the load() function is a little different. Overriding it might look like this:
myLoader.load = function(dataset, callback) {
startSpinningWheel();
// get loader callback name
var callbackName = this.getCallbackName(dataset, callback),
// create a script tag
script = document.createElement("script");
// change the callback function - this is always a little tricky,
// and might take some trial and error
var baseCallback = TimeMap.loaders.cb[callbackName];
TimeMap.loaders.cb[callbackName] = function(result) {
stopSpinningWheel();
baseCallback(result);
};
// set the src attribute and add to the document
script.src = this.url + "TimeMap.loaders.cb." + callbackName;
document.body.appendChild(script);
};
Again, this is a pretty ugly way to accomplish this - I've put in an issue to offer easier hooks from TimeMap.init(). Probably there should just be parameters in the loader options that would allow you to set loadStart and loadComplete functions.
-Nick