Another option would be to define something like this in Javascript:
var link_titles = {link1: "Title 1", link2: "Title 2"};
Then you can use this later in your Javascript code, assuming your link has an ID that corresponds to the ID in this hashtable.
It doesn't have the disadvantages of the other two methods: no non-standard attributes nor the ugly hidden span.
The disadvantage is that it might a bit of an overkill for things as simple as your example. But for more complex scenarios, where you have more data to pass, it's a good choice. Especially considering that the data is being passed as JSON, so you can pass complex objects with ease.
Also, you keep data separate from the formatting, which is a good thing for maintainability.
You can even have something like this (which you can't really do with the other methods):
var poi_types = {1: "City", 2: "Restaurant"};
var poi = {1: {lat: X, lng: Y, name: "Beijing", type: 1}, 2: {lat: A, lng: B, name: "Hatsune", type: 2}};
...
And since you most probably use some server-side programming language, this hash table should be trivial to generate dynamically (just serialize it to JSON and spit it in the header section of the page).