I have a sort of setup like... google maps. It has nothing to do with maps but the mechanism seems to be similar.
I have an image ~300MB and the client can drag the picture around having different parts of it in view in the browser. I want to load only the specific parts of the image which the user is looking at, and unload the parts which are out of view (to save RAM).
I thought of breaking the image in 15X15px chunks and load the correct chunks each time but I can't seem to wrap my mind around which technique should I use to actually perform this task.
Any suggestions?
Google Maps breaks up their images (including streetview etc) into smaller chunks. I've seen a lot of people use their own images WITH the Google Maps technology to create their own maps of whatever (one, for example, is a fantasy world/web game I can remember)
Perhaps, instead of reinventing the wheel, inspect the other guys' wheel and see if you can use the same technology to create what you need. GTA for example: http://www.gta4.net/map/
This should get you started: https://developers.google.com/maps/
Google maps api: https://developers.google.com/maps/ seems to allow everything I need but it is clumsy and limited for the types of things I want to do.
It's like solving the problem backwards.. figuring out how to work with the map, and the hiding the map layer... which is... doing a lot of work for nothing.
With that, that seemed to be the best solution out there until I cam acroos this:
Panojs
http://www.dimin.net/software/panojs/
This seems to be super easy to use and quite flexible.
or Zoom.it which is based on SeaDragon which is also super easy to use!
http://www.zoom.it/
Cheers
Related
I have spent about 3 whole days searching for a Google Earth API extension that would enable users to perform selections of placemarks by either clicking multiple points, OR by drawing a polygon. I didn't budget or spec this functionality because I was confident that this is the type of thing that would be readily available for Google Earth. Turns out I was wrong.
At any rate, I am not asking anyone to write the code, I am hoping someone has come across a javascript library that enables this functionality.
As you have discovered GE plugin does not support drawing or dragging without writing some code yourself.
There is an extension library that I have found useful for draggable placemarks. Use makeDraggable().
Example here:
http://earth-api-utility-library.googlecode.com/svn/trunk/extensions/examples/draggable.html
Source here:
https://code.google.com/p/earth-api-utility-library/source/browse/trunk/extensions/src/edit/dragging.js
I believe you want to look at the second example: https://developers.google.com/earth/documentation/events#examples
I have been developing an application on google chrome, and I've been using the MarkerWithLabel library, which i believe is written by google developers. I am using a little over 100 markers on the map and it seemed to be pretty smooth until i checked in firefox (and lets not even mention IE). It is pretty damn laggy in FF. Any way to optimize it?
http://jsfiddle.net/zDTNS/2 Here is a sample in jsfiddle
To clarify, having 200 regular markers works fine. The problem shows up when using MarkerWithLabel
Generally speaking the best way to optimize any Google maps application is using a clustering technique. As the application loads more and more markers the client-side rendering over-head will only increase. The addition of labels only compounds the issue.
A number of clustering techniques exist and are simple to implement, I'd suggest starting with this article: https://developers.google.com/maps/articles/toomanymarkers.
Edit Leaving above in place in case anyone doesn't have the same spec requirement, but similar issue.
My only other suggestion would be to turn off the labels when above a certain zoom level? This will at least alleviate some of the worst of the rendering issues.
Edit After doing a bit of research the library introduced here has been shown to have far more favorable performance characteristics than markerWithLabel. It relies on a html canvas though so is ie9+.
After spending 2 weeks researching and trying all sorts of methods, most suggested on here, I arrived to the conclusion that there just is no way to optimize at the moment. For some reason firefox struggles when there are divs on top of the map and keeping them in sync. The performance on the latest firefox was almost the same as IE8.
I found that having a ton of google markers does not cause any lagging, but divs do. What I ended up doing was create a server side function that converts text to png. When initializing the google marker, you make the icon url TextToImage.aspx?text=Hello&size=13
Then I set the anchor of the new marker to (15, 15) and that became my new 'label'. I added some click and mouseover listeners to the label marker and voila! Insane improvement to performance.
If you only want a couple of characters inside a pin, another alternative is:
https://chart.apis.google.com/chart?chst=d_map_pin_letter&chld=${displayCharacters}|${pinColorHex}|${fontColorHex}
Check this example.
If you access your mobile me account online with Safari, you can select an icon and login directly to selected service, great feature btw.
But if you access the same page using other browser like firefox or Chrome, you will see a gorgeous login page with a big, no huge cloud in the middle (the MobileMe logo) and interesting lighballs comming out of it.
Here's the link:
https://auth.me.com/authenticate?service=mail&ssoNamespace=appleid&formID=loginForm&returnURL=aHR0cHM6Ly9tZS5jb20vbWFpbC8=
And the greatest thing is that you can mouse over those little light balls and they follow your mouse movement.
Its just beautiful and i have never seen anything like that in Javascript. And i couldnt understand by looking at their code, how they did it. Of course their javascript is compressed so i couldn't look at it, but in the markup those shiny lights are just a bunch of canvas tags.
Does any one have an idea of how to make something like that? Its probably way beyond my javascript skills but it would be great to add such an effect to one of my projects.
Thanks in advance for all your suggestions ;)
that takes a lot of skills. I believe its achievable with processing.js
http://processingjs.org/
Take a look at this [quote]:
So, how is this eye candy accomplished? Through over 6000 lines of
(unminified) JS. MobileMe usually uses SproutCore for its
applications, but after looking through the source code, I didn’t find
a single reference to it. There did appear to be some resemblance of
a library being used in the login page, however, but I think it is
pretty custom. There appeared to be a class for each of the visual
components on the screen, at least one if not two separate animation
libraries (one 2d and one 3d), a particle rendering library, and
libraries for dealing with canvas drawing and DOM manipulation.
So it looks like it was custom made. You can read more here: http://badassjs.com/post/1649735994/the-new-mobileme-login-page-has-some-badass-js
I hope this helps.
Is there a decent non-flash replacement for Google's GeoMap? I'm trying to "push" redraws, but because it's flash it has to run back to Google, render a flash object, and then replace it.
Google now has the GeoChart which is the replacement to GeoMap. It creates an SVG and has more flexibility in terms of customization such as changing the background color of the map, etc, etc.
http://code.google.com/apis/chart/interactive/docs/gallery/geochart.html
I am afraid that there isn't a free map API as good as this and easy to use.
I've also scoured the web for something I could use that isn't flash but I suppose we have to wait a little while until html 5 gets going something will jump out of the dev bushes with a canvas tag hopefully.
I hope this answers your question. I'll keep looking though. I've been at it for 3 months.
A Google employee just told me they're working on an HTML5 version of the GeoMap API, but it won't be available for a few months.
As for a replacement, this is the closest I could find, but doesn't offer interactivity, rollovers, or subregions: http://joncom.be/code/excanvas-world-map/
Check out http://jvectormap.owl-hollow.net/
It is svg, fully compatible across browsers and has almost everything that google geomaps offers.mit is very easy to implement, more like a jquery plugin amd feeds from json as well.
I've been asked to collate a list as possible of the modern uses for Image Maps.
When they first came into being, web-designers in the 90s used them as one of the first ways to create a more immersive experience, but now a-days they can be linked to javascript and jquery to perform all sorts of "exciting" tasks. Many of their possible uses have been superseded by flash, but I'm trying to find recent implementations, that use image maps in a really neat way, along with their urls.
The best I can do is the map highlight plugin for jquery, though sadly it's recent releases don't appear to work with IE8. If it did, it would be most impressive.
Hopefully someone has written some image map work themselves and could show it here. Many thanks.
ScrollMap
I have not used an Image Map in ages... where I can get away with, I just absolutely position links over a background image.
One thing Image Maps can do that CSS and XHTML can't do (reliably) is polygons and circles. You could argue you could place a few hundred 1px links to make a circle - but that solution is ugly, bloated and more trouble than just using an Image Map.