I have multiple location. One is from Netherlands and one from India. How to display both country marker in google map view port?
Currently only Netherlands markers are displayed. So I have to drag map for watch Indian location marker. How can I get both in same view port without dragging?
var properties = {
"locations": [
{
"property_title": "Properties 1",
"property_avg_review": "4.75",
"property_price": "$4",
"property_latitude": "21.232689",
"property_longitude": "72.865141"
},
{
"property_title": "Chalet Type B (vb. Westerbergen)",
"property_avg_review": 0,
"property_price": "$400.25",
"property_latitude": "52.7121",
"property_longitude": "6.39892"
}
]
};
function initialize(response) {
var map = new google.maps.Map(document.getElementById('map'), {
zoom: 10,
center: new google.maps.LatLng(-33.92, 151.25),
mapTypeId: google.maps.MapTypeId.ROADMAP
});
var infowindow = new google.maps.InfoWindow();
locations = properties.locations;
for (var i = 0; i < locations.length; i++) {
var title = locations[i]['property_title'];
var avg_review = locations[i]['property_avg_review']
var address = locations[i]['property_address'];
var price = locations[i]['property_price'];
var latitude = locations[i]['property_latitude'];
var longitude = locations[i]['property_longitude'];
var data_index = i;
var marker = new google.maps.Marker({
position: new google.maps.LatLng(latitude, longitude),
map: map,
icon: normalIcon(),
label: {
text: price,
color: 'black',
fontSize: '16px',
fontWeight: 'bold',
marginTop: '7px'
}
});
map.setCenter(marker.getPosition())
markers['hover_' + data_index] = marker;
markers['hover_' + data_index].setZIndex(google.maps.Marker.MAX_ZINDEX + data_index);
var rating = parseFloat(avg_review);
var numStars = 5;
var fullStar = new Array(Math.floor(rating + 1)).join('<i class="fa fa-star"></i>');
var halfStar = ((rating % 1) !== 0) ? '<i class="fa fa-star-half-empty"></i>' : '';
var noStar = new Array(Math.floor(numStars + 1 - rating)).join('<i class="fa fa-star-o"></i>');
var box_content = '<div class="property_box_map">';
box_content += '<div class="property_review_price">';
box_content += '<label><b>From</b></label> ' + price + ' | <span class="stars">' + fullStar + halfStar + noStar + '</span>';
box_content += '</div>';
box_content += '</div>';
google.maps.event.addListener(marker, 'click', (function (marker, box_content, infowindow) {
return function () {
infowindow.setContent(box_content);
infowindow.open(map, marker);
activeWindow = infowindow;
}
})(marker, box_content, infowindow));
google.maps.event.addListener(infowindow, 'domready', function () {
var iwOuter = jQuery('.gm-style-iw');
var iwBackground = iwOuter.prev();
// Remove the background shadow DIV
iwBackground.children(':nth-child(2)').css({ 'display': 'none' });
// Remove the white background DIV
iwBackground.children(':nth-child(4)').css({ 'display': 'none' });
});
}
google.maps.event.addListener(map, "click", function (event) {
if (typeof activeWindow != "undefined") {
activeWindow.close();
}
});
}
google.maps.event.addDomListener(window, 'load', initialize);
//get normal icon for map.
function normalIcon() {
return {
url: "https://cdn.smokymountains.com/static/maps/pointer-normal.png",
scaledSize: new google.maps.Size(80, 40),
origin: new google.maps.Point(0, 0),
anchor: new google.maps.Point(32, 65),
labelOrigin: new google.maps.Point(40, 17)
};
}
//get active icon for map whenever hover on property.
function activeIcon() {
return {
url: "https://cdn.smokymountains.com/static/maps/pointer-active.png",
scaledSize: new google.maps.Size(80, 40),
origin: new google.maps.Point(0, 0),
anchor: new google.maps.Point(32, 65),
labelOrigin: new google.maps.Point(40, 17)
};
}
Best Answer
add this
--> var bounds = new google.maps.LatLngBounds();
before this line
--> for (var i = 0; i < locations.length; i++) {
add this
--> bounds.extend(marker.position);
before this line
--> bounds.extend(marker.position);
add this
--> map.fitBounds(bounds);
at end
} of --> function initialize(response) {