私が使用しているGoogle APIのソースコードをここに添付しました。表示したいマーカーのリストを含む配列を作成しました。オンラインで使用できることを示すリンク ( http://blog.shamess.info/2009/09/29/zoom-to-fit-all-markers-on-google-maps-api-v3/ ) を見つけましたすべてのマーカーを表示するには、フィット バウンド メソッドを使用します。私はそれを実装しようとしましたが、すべてのマーカーを表示できるのではなく、すべてのマーカーを表示する前に表示できなくなりました。誰かが私をここに案内してくれれば、とてもありがたいです。私はjsに非常に慣れていないので、本当にばかげた間違いを犯した場合はご容赦ください。
function initApp() {
APIKey = {
'bing': '',
'leaflet': ''
};
console.log('app initialized');
startGeolocation();
}
/**
* google maps
*/
// initialize the map
function initGoogleMaps() {
myLocation = new google.maps.LatLng(myLat, myLong);
var mapOptions = {
zoom: 13,
center: myLocation,
mapTypeId: google.maps.MapTypeId.ROADMAP,
zoomControl: true,
mapTypeControl: false,
streetViewControl: false
};
googleMap = new google.maps.Map(document.getElementById("map_canvas"), mapOptions);
}
// search for nearby places
function initGooglePlaces() {
//searchForPlaces(googlePlacesCallback);
findMe();
}
// search callback
function googlePlacesCallback(results) {
for(var i = 0; i < results.length; i++) {
createGoogleMarker(results[i]);
}
}
// create a marker / push-pin
function createGoogleMarker(place) {
var placeLoc = place.geometry.location;
var marker = new google.maps.Marker({
map: googleMap,
position: place.geometry.location
});
}
function multiMe(){ }
function findMe() {
var multiArray = new Array (5);
multiArray [0] = new Array(2);
multiArray [1] = new Array(2);
multiArray [2] = new Array(2);
multiArray [3] = new Array(2);
multiArray [4] = new Array(2);
multiArray [0][0] = "43.9651";
multiArray [0][1] = "-78.8917";
multiArray [1][0] = "43.9551";
multiArray [1][1] = "-78.8917";
multiArray [2][0] = "43.9451";
multiArray [2][1] = "-78.8917";
multiArray [3][0] = "43.9351";
multiArray [3][1] = "-78.8917";
multiArray [4][0] = "43.951";
multiArray [4][1] = "-78.8917";
for(i=0; i<5; i++){
var tLat = multiArray [i][0];
var tLong = multiArray [i][1];
var newLatLng = new google.maps.LatLng(tLat,tLong );
var bounds = new google.maps.LatLngBounds ();
bounds.extend (newLatLng[i]);
var marker = new google.maps.Marker({
map: googleMap,
position: newLatLng
});
map.fitBounds (bounds);
}
}
/**
* search for POI
*/
// example of seraching for places using google
function searchForPlaces(callback) {
var request = {
location: myLocation,
radius: 2000,
types: ['bar']
};
infowindow = new google.maps.InfoWindow();
var service = new google.maps.places.PlacesService(googleMap);
service.search(request, callback);
return;
}
/**
* geolocation
*/
// we use HTML5 Geolocation to pin-point where the user is
function startGeolocation() {
var options;
navigator.geolocation.getCurrentPosition(geoSuccess, geoFail, options);
}
// geolocation success callback
function geoSuccess(position) {
var gpsPosition = position;
var coordinates = gpsPosition.coords;
myLat = coordinates.latitude;
myLong = coordinates.longitude;
bb.pushScreen('google.html', 'google');
}
// geolocation failure callback
function geoFail() {
alert('Error getting your position. Using defaults instead');
// set default position upon failure
myLat = 44.465187;
myLong = -80.522372;
bb.pushScreen('google.html', 'google');
}