Это своего рода вопрос-головоломка, так как код работает отлично, как есть, он просто немного раздражает мое эстетическое чувство. Я обращаюсь к переполнению стека, потому что мой собственный мозг сейчас меня подводит.
Вот фрагмент кода, который ищет адрес с помощью API Карт Google JS и размещает маркер на карте. Однако иногда первоначальный поиск завершается неудачно, поэтому я хочу повторить процесс с другим адресом.
geocoder.getLatLng(item.mapstring, function(point) {
if (!point) {
geocoder.getLatLng(item.backup_mapstring, function(point) {
if (!point) return;
map.setCenter(point, 13);
map.setZoom(7);
map.addOverlay(new GMarker(point));
})
return;
}
map.setCenter(point, 13);
map.setZoom(7);
map.addOverlay(new GMarker(point));
})
(Второй параметр getLatLng
является функцией обратного вызова.)
Конечно, вы можете видеть, что три линии, которые центрируют и увеличивают карту и добавляют маркер, дублируются, один раз в основном обратном вызове и один раз в "обратном вызове" (ха-ха). Можете ли вы найти способ выразить все это без какой-либо избыточности? Вы зарабатываете бонусные баллы и мою благодарность, если ваше решение работает с произвольным числом строк резервной карты.