我正在使用 ng-map 并尝试在谷歌地图上显示多个标记。当页面加载时,我希望看到地图上分散在各个国家/地区的所有标记。
地图仅显示一个标记的放大部分。可能是因为我将地图中心分配给数组中的最后一项。当我滚动/放大和缩小地图时,我可以看到所有标记。
我不确定当有多个标记时地图中心应该是什么,以及如何获得在地图加载时显示所有标记的地图视图
这是代码:
控制器:
$scope.cityMetaData = [];
$scope.getCityInfo = function(){
for(var i=0; i<$scope.cityIds.length; i++){
var id = $scope.cityIds[i];
GetCity.query({cityid: id}, function(data) {
if (data.status == "success") {
var cityData = data;
$scope.cityMetaData.push(cityData);
$scope.addressMarker(cityData);
}
});
}
}
$scope.addressMarker = function(cityItem) {
var address = cityItem.cityName;
geocoder = new google.maps.Geocoder();
geocoder.geocode({
'address' : address
}, function(results, status) {
if ( status == google.maps.GeocoderStatus.OK ) {
$scope.lat = results[0].geometry.location.lat();
$scope.lng = results[0].geometry.location.lng();
$scope.markerData.push({
"latitude" : results[0].geometry.location.lat(),
"longitude" : results[0].geometry.location.lng(),
"title" : results[0].formatted_address
});
} else {
$log.info('Geocode was not successful for the following reason:' + status);
}
});
}
$scope.getCityInfo();
html:
<map center="[{{lat}},{{lng}}]" zoom="8" style="display:block; width:auto; height:auto;">
<marker ng-repeat="pin in markerData" position="{{pin.latitude}},{{pin.longitude}}" title="{{pin.title}}"></marker>
</map>
示例 $scope.markerData 数组:
[{"latitude":38.232417,"longitude":-122.6366524,"title":"Petaluma, CA, USA"},
{"latitude":34.1477849,"longitude":-118.14451550000001,"title":"Pasadena, CA, USA"},
{"latitude":40.7556818,"longitude":-73.8830701,"title":"Jackson Heights, Queens, NY, USA"},
{"latitude":32.7766642,"longitude":-96.79698789999998,"title":"Dallas, TX, USA"},
{"latitude":37.7974273,"longitude":-121.21605260000001,"title":"Manteca, CA, USA"},
{"latitude":37.48521520000001,"longitude":-122.23635480000002,"title":"Redwood City, CA, USA"}]