这是一道类似智力题的问题,因为代码本身完全可以正常工作,只是让我感觉稍微有点不爽。我向Stack Overflow求助是因为我自己的大脑暂时失灵了。
以下是使用Google Maps JS API查找地址并在地图上放置标记的代码片段。但是,有时初始查找会失败,因此我想用另一个地址重复该过程。
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
的第二个参数是一个回调函数。)
当然,你可以看到在主要回调和“备用回调”中重复了三行代码,这些代码居中、缩放地图并添加标记。你能找到一种不重复的表达方式吗?如果你的解决方案适用于任意数量的备用地图字符串,你将获得额外的奖励分数和我的赞赏。