На втором вопросе,
показать некоторые картины над картой около города?
Мне нравится ответ @ andykram, но я реализовал это ранее, используя слой Panoramio, доступный для API Карт. Он может стать немного переполненным, но к нему привыкли люди интерфейса, и потому, что его так просто включить в карту, на этот раз это просто решение для вас.
Просто добавьте следующую функцию инициализации карты.
var myLayer = new GLayer("com.panoramio.all");
map.addOverlay(myLayer);
Насколько динамично показывая любой город в мире в карте Google, решение легко реализовать - нужно геокодирования название города. Это может быть сделано путем запуска функции в событии, например onclick.
function showAddress(address) {
if (geocoder) {
geocoder.getLatLng(
address,
function(point) {
if (point) {
map.setCenter(point, 13);
var marker = new GMarker(point);
map.addOverlay(marker);
marker.openInfoWindowHtml(address);
}
}
);
}
}
Если вы попали в препятствие, попробуйте этот первый - http://econym.org.uk/gmap/ - возможно, лучший ресурс для API GMaps в Интернете.
Кстати, если вы собираетесь неоднократно показывать один и тот же набор городов, я рекомендую создать в нем XML-файл с именами городов и геокоординированными координатами, а не использовать объект геокодирования в API Карт. –