Как открыть информационное окно и закрыть другое информационное окно при нажатии маркера службы мест? [дубликат]Jquery

Программирование на jquery
Ответить Пред. темаСлед. тема
Гость
 Как открыть информационное окно и закрыть другое информационное окно при нажатии маркера службы мест? [дубликат]

Сообщение Гость »


Я использую службу адресов для загрузки мест, расположенных рядом с местоположением по умолчанию. Проблема в том, что когда я нажимаю на маркер, открывается информационное окно, но не закрываются другие открытые информационные окна. Как открыть информационное окно и закрыть другие информационные окна?
Начальный маркер

Поиск поблизости: я хочу, чтобы при нажатии на маркер отображались другие открытые информационные окна. закрыто
Изображение
Ниже приведены созданные мной коды

Код: Выделить всё

function initMap() {
const defaultLocation = { lat: {{ $property->latitude }}, lng: {{ $property->longitude }} };
const map = new google.maps.Map(document.getElementById('property-full-address-map'), {
center: defaultLocation,
zoom: 14,
mapTypeId: google.maps.MapTypeId.ROADMAP,
mapTypeControl: false,
streetViewControl: false,
gestureHandling: "greedy",
styles: [ { "elementType": "geometry", "stylers": [ { "color": "#f5f5f5" } ] }, { "elementType": "labels.icon", "stylers": [ { "visibility": "off" } ] }, { "elementType": "labels.text.fill", "stylers": [ { "color": "#616161" } ] }, { "elementType": "labels.text.stroke", "stylers": [ { "color": "#f5f5f5" } ] }, { "featureType": "administrative.land_parcel", "elementType": "labels.text.fill", "stylers": [ { "color": "#bdbdbd" } ] }, { "featureType": "poi", "elementType": "geometry", "stylers": [ { "color": "#eeeeee" } ] }, { "featureType": "poi", "elementType": "labels.text.fill", "stylers": [ { "color": "#757575" } ] }, { "featureType": "poi.park", "elementType": "geometry", "stylers": [ { "color": "#e5e5e5" } ] }, { "featureType": "poi.park", "elementType": "labels.text.fill", "stylers": [ { "color": "#9e9e9e" } ] }, { "featureType": "road", "elementType": "geometry", "stylers": [ { "color": "#ffffff" } ] }, { "featureType": "road.arterial", "elementType": "labels.text.fill", "stylers": [ { "color": "#757575" } ] }, { "featureType": "road.highway", "elementType": "geometry", "stylers": [ { "color": "#dadada" } ] }, { "featureType": "road.highway", "elementType": "labels.text.fill", "stylers": [ { "color": "#616161" } ] }, { "featureType": "road.local", "elementType": "labels.text.fill", "stylers": [ { "color": "#9e9e9e" } ] }, { "featureType": "transit.line", "elementType": "geometry", "stylers": [ { "color": "#e5e5e5" } ] }, { "featureType": "transit.station", "elementType": "geometry", "stylers": [ { "color": "#eeeeee" } ] }, { "featureType": "water", "elementType": "geometry", "stylers": [ { "color": "#91D5E4" } ] }, { "featureType": "water", "elementType": "labels.text.fill", "stylers": [ { "color": "#9e9e9e" } ] } ]
});

var marker = new google.maps.Marker({
position: defaultLocation,
map,
title: "Property Location",
});

marker.setMap(map);

}

$(document).ready(function() {
$('.nearby-search-btn').click(function() {
const type = $(this).data('type');
const defaultLocation = { lat: {{ $property->latitude }}, lng: {{ $property->longitude }} };
const map = new google.maps.Map(document.getElementById('property-full-address-map'), {
center: defaultLocation,
zoom: 16,
mapTypeId: google.maps.MapTypeId.ROADMAP,
mapTypeControl: false,
streetViewControl: false,
gestureHandling: "greedy",
styles: [ { "elementType": "geometry", "stylers": [ { "color": "#f5f5f5" } ] }, { "elementType": "labels.icon", "stylers": [ { "visibility": "off"  } ] }, { "elementType": "labels.text.fill", "stylers": [ { "color": "#616161" } ] }, { "elementType": "labels.text.stroke", "stylers": [ { "color": "#f5f5f5" } ] }, { "featureType": "administrative.land_parcel", "elementType": "labels.text.fill", "stylers": [ { "color": "#bdbdbd" } ] }, { "featureType": "poi", "elementType": "geometry", "stylers": [ { "color": "#eeeeee" } ] }, { "featureType": "poi", "elementType": "labels.text.fill", "stylers": [ { "color": "#757575" } ] }, { "featureType": "poi.park", "elementType": "geometry", "stylers": [ { "color": "#e5e5e5" } ] }, { "featureType": "poi.park", "elementType": "labels.text.fill", "stylers": [ { "color": "#9e9e9e" } ] }, { "featureType": "road", "elementType": "geometry", "stylers": [ { "color": "#ffffff" } ] }, { "featureType": "road.arterial", "elementType": "labels.text.fill", "stylers": [ { "color": "#757575" } ] }, { "featureType": "road.highway", "elementType": "geometry", "stylers": [ { "color": "#dadada" } ] }, { "featureType": "road.highway", "elementType": "labels.text.fill", "stylers": [ { "color": "#616161" } ] }, { "featureType": "road.local", "elementType": "labels.text.fill", "stylers": [ { "color": "#9e9e9e" } ] }, { "featureType": "transit.line", "elementType": "geometry", "stylers": [ { "color": "#e5e5e5" } ] }, { "featureType": "transit.station", "elementType": "geometry", "stylers": [ { "color": "#eeeeee" } ] }, { "featureType": "water", "elementType": "geometry", "stylers": [ { "color": "#91D5E4" } ] }, { "featureType": "water", "elementType": "labels.text.fill", "stylers": [ { "color": "#9e9e9e" } ] } ]
});

var marker = new google.maps.Marker({
position: defaultLocation,
map,
icon: {
url: "{{ asset('front/img/marker.png') }}",
scaledSize: new google.maps.Size(40, 40)
},
title: "Property Location",
});

var request = {
location: defaultLocation,
radius: '500',
type: [type]
};

var service = new google.maps.places.PlacesService(map);
service.nearbySearch(request, callback);

function callback(results, status) {
if (status == google.maps.places.PlacesServiceStatus.OK) {
for (var i = 0; i < results.length;  i++) {
var place = results[i];
createMarker(results[i]);
}
}
}

function createMarker(place) {
var neighborhoodMarker = new google.maps.Marker({
map: map,
position: place.geometry.location,
icon: {
url: place.icon,
scaledSize: new google.maps.Size(25, 25)
},
label: ''
});

var ratingCount = place.rating;
var rating = '';
//add icon for rating count
if (ratingCount >= 4.5) {
rating = '[/i][i][/i][i][/i][i][/i][i][/i]';
} else if (ratingCount >= 4) {
rating = '[i][/i][i][/i][i][/i][i][/i]';
} else if (ratingCount >= 3.5) {
rating = '[i][/i][i][/i][i][/i][i][/i]';
} else if (ratingCount >= 3) {
rating = '[i][/i][i][/i][i][/i]';
} else if (ratingCount >= 2.5) {
rating = '[i][/i][i][/i][i][/i]';
} else if (ratingCount >= 2) {
rating = '[i][/i][i][/i]';
} else if (ratingCount >= 1.5) {
rating = '[i][/i][i][/i]';
} else if (ratingCount >= 1) {
rating = '[i][/i]';
} else {
rating = '[i][/i]';
}

var contentString = `


` + place.name + `
` + place.vicinity + `

` + rating + `
` + place.user_ratings_total + ` Reviews



`;

var neighborhoodInfoWindow = new google.maps.InfoWindow({
content:  contentString
});

neighborhoodMarker.addListener('click', function() {
neighborhoodInfoWindow.open(map, neighborhoodMarker);
});

google.maps.event.addListener(map, 'click', function() {
neighborhoodInfoWindow.close();
});
}
});
});


Этот вопрос уже решен с помощью приведенного ниже кода.

Код: Выделить всё

var markers = [];
function initMap() {
const defaultLocation = { lat: {{ $property->latitude }}, lng: {{ $property->longitude }} };
const map = new google.maps.Map(document.getElementById('property-full-address-map'), {
center: defaultLocation,
zoom: 14,
mapTypeId: google.maps.MapTypeId.ROADMAP,
mapTypeControl: false,
streetViewControl: false,
gestureHandling: "greedy",
styles: [ { "elementType": "geometry", "stylers": [ { "color": "#f5f5f5" } ] }, { "elementType": "labels.icon", "stylers": [ { "visibility": "off" } ] }, { "elementType": "labels.text.fill", "stylers": [ { "color": "#616161" } ] }, { "elementType": "labels.text.stroke", "stylers": [ { "color": "#f5f5f5" } ] }, { "featureType": "administrative.land_parcel", "elementType": "labels.text.fill", "stylers": [ { "color": "#bdbdbd" } ] }, { "featureType": "poi", "elementType": "geometry", "stylers": [ { "color": "#eeeeee" } ] }, { "featureType": "poi", "elementType": "labels.text.fill", "stylers": [ { "color": "#757575" } ] }, { "featureType": "poi.park", "elementType": "geometry", "stylers": [ { "color": "#e5e5e5" } ] }, { "featureType": "poi.park", "elementType": "labels.text.fill", "stylers": [ { "color": "#9e9e9e" } ] }, { "featureType": "road", "elementType": "geometry", "stylers": [ { "color": "#ffffff" } ] }, { "featureType": "road.arterial", "elementType": "labels.text.fill", "stylers": [ { "color": "#757575" } ] }, { "featureType": "road.highway", "elementType": "geometry", "stylers": [ { "color": "#dadada" } ] }, { "featureType": "road.highway", "elementType": "labels.text.fill", "stylers": [ { "color": "#616161" } ] }, { "featureType": "road.local", "elementType": "labels.text.fill", "stylers": [ { "color": "#9e9e9e" } ] }, { "featureType": "transit.line", "elementType": "geometry", "stylers": [ { "color": "#e5e5e5" } ] }, { "featureType": "transit.station", "elementType": "geometry", "stylers": [ { "color": "#eeeeee" } ] }, { "featureType": "water", "elementType": "geometry", "stylers": [ { "color": "#91D5E4" } ] }, { "featureType": "water", "elementType": "labels.text.fill", "stylers": [ { "color": "#9e9e9e"  } ] } ]
});

var marker = new google.maps.Marker({
position: defaultLocation,
map,
title: "Property Location",
});

marker.setMap(map);

}

$(document).ready(function() {
$('.nearby-search-btn').click(function() {
const type = $(this).data('type');
const defaultLocation = { lat: {{ $property->latitude }}, lng: {{ $property->longitude }} };
const map = new google.maps.Map(document.getElementById('property-full-address-map'), {
center: defaultLocation,
zoom: 16,
mapTypeId: google.maps.MapTypeId.ROADMAP,
mapTypeControl: false,
streetViewControl: false,
gestureHandling: "greedy",
styles: [ { "elementType": "geometry", "stylers": [ { "color": "#f5f5f5" } ] }, { "elementType": "labels.icon", "stylers": [ { "visibility": "off" } ] }, { "elementType": "labels.text.fill", "stylers": [ { "color": "#616161" } ] }, { "elementType": "labels.text.stroke", "stylers": [ { "color": "#f5f5f5" } ] }, { "featureType": "administrative.land_parcel", "elementType": "labels.text.fill", "stylers": [ { "color": "#bdbdbd" } ] }, { "featureType": "poi", "elementType": "geometry", "stylers": [ { "color": "#eeeeee" } ] }, { "featureType": "poi", "elementType": "labels.text.fill", "stylers": [ { "color": "#757575" } ] }, { "featureType": "poi.park", "elementType": "geometry", "stylers": [ { "color": "#e5e5e5" } ] }, { "featureType": "poi.park", "elementType": "labels.text.fill", "stylers": [ { "color": "#9e9e9e" } ] }, { "featureType": "road", "elementType": "geometry", "stylers": [ { "color": "#ffffff" } ] }, { "featureType": "road.arterial", "elementType": "labels.text.fill", "stylers": [ { "color": "#757575" } ] }, { "featureType": "road.highway", "elementType": "geometry", "stylers": [ { "color": "#dadada" } ] }, { "featureType": "road.highway", "elementType": "labels.text.fill", "stylers": [ { "color": "#616161" } ] }, { "featureType": "road.local", "elementType": "labels.text.fill", "stylers": [ { "color": "#9e9e9e" } ] }, { "featureType": "transit.line", "elementType": "geometry", "stylers": [ { "color": "#e5e5e5" } ] }, { "featureType": "transit.station", "elementType": "geometry", "stylers": [ { "color": "#eeeeee" } ] }, { "featureType": "water", "elementType": "geometry", "stylers": [ { "color": "#91D5E4" } ] }, { "featureType": "water", "elementType": "labels.text.fill", "stylers": [ { "color": "#9e9e9e" } ] } ]
});

var neighborhoodMarker = new google.maps.Marker({
position: defaultLocation,
map,
icon: {
url: "{{ asset('front/img/marker.png') }}",
scaledSize: new google.maps.Size(40, 40)
},
title: "Property Location",
});

var request = {
location: defaultLocation,
radius: '500',
type: [type]
};

var service = new google.maps.places.PlacesService(map);
service.nearbySearch(request, callback);

function callback(results, status) {
if (status == google.maps.places.PlacesServiceStatus.OK) {
for (var i = 0; i < results.length;  i++) {
var place = results[i];
createMarker(results[i], i);
}
}
}

function createMarker(place, id) {

var ratingCount = place.rating;
var rating = '';
//add icon for rating count
if (ratingCount >= 4.5) {
rating = '[i][/i][i][/i][i][/i][i][/i][i][/i]';
} else if (ratingCount >= 4) {
rating = '[i][/i][i][/i][i][/i][i][/i]';
} else if (ratingCount >= 3.5) {
rating = '[i][/i][i][/i][i][/i][i][/i]';
} else if (ratingCount >= 3) {
rating = '[i][/i][i][/i][i][/i]';
} else if (ratingCount >= 2.5) {
rating = '[i][/i][i][/i][i][/i]';
} else if (ratingCount >= 2) {
rating = '[i][/i][i][/i]';
} else if (ratingCount >= 1.5) {
rating = '[i][/i][i][/i]';
} else if (ratingCount >= 1) {
rating = '[i][/i]';
} else {
rating = '[i][/i]';
}

var contentString = `


` + place.name + `
` + place.vicinity + `

` + rating + `
` + place.user_ratings_total + ` Reviews



`;

var infowindow = new google.maps.InfoWindow({
content: contentString
});

var neighborMarker = new google.maps.Marker({
map: map,
position: place.geometry.location,
icon: {
url: place.icon,
scaledSize: new google.maps.Size(25, 25)
},
label: '',
title: place.name,
infowindow: infowindow
});

markers.push(neighborMarker);

google.maps.event.addListener(neighborMarker, 'click', function() {
hideAllInfoWindows(map);
this.infowindow.open(map, this);
});

}

function hideAllInfoWindows(map) {
markers.forEach(function(marker) {
marker.infowindow.close(map, marker);
});
}

});
});




Источник: https://stackoverflow.com/questions/780 ... -place-ser
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Jquery»