public class StringPool {
public static void main(String[] args) {
String s1 = "Cat";// will create reference in string pool of heap memory
String s2 = "Cat";
String s3 = new String("Cat");//will create a object in heap memory
// Using == will give us true because same reference in string pool
if (s1 == s2) {
System.out.println("true");
} else {
System.out.println("false");
}
// Using == with reference and Object will give us False
if (s1 == s3) {
System.out.println("true");
} else {
System.out.println("false");
}
// Using .equals method which refers to value
if (s1.equals(s3)) {
System.out.println("true");
} else {
System.out.println("False");
}
}
}
---- Выход ----- true false true
Просто выполните следующее:
I. Объявить глобальную переменную:
var markersArray = [];
II. Определите функцию:
function clearOverlays() {
for (var i = 0; i < markersArray.length; i++ ) {
markersArray[i].setMap(null);
}
markersArray.length = 0;
}
ИЛИ
google.maps.Map.prototype.clearOverlays = function() {
for (var i = 0; i < markersArray.length; i++ ) {
markersArray[i].setMap(null);
}
markersArray.length = 0;
}
III. Нажимайте маркеры в «markerArray», прежде чем вызывать следующее:
markersArray.push(marker);
google.maps.event.addListener(marker,"click",function(){});
IV. Вызовите функцию clearOverlays();
или map.clearOverlays();
, где это необходимо.
Вот и все!
Чистое и простое применение ответа роллингера.
function placeMarkerAndPanTo(latLng, map) {
while(markersArray.length) { markersArray.pop().setMap(null); }
var marker = new google.maps.Marker({
position: latLng,
map: map
});
map.panTo(latLng);
markersArray.push(marker) ;
}
Вам нужно установить значение null для этого маркера.
var markersList = [];
function removeMarkers(markersList) {
for(var i = 0; i < markersList.length; i++) {
markersList[i].setMap(null);
}
}
function addMarkers() {
var marker = new google.maps.Marker({
position : {
lat : 12.374,
lng : -11.55
},
map : map
});
markersList.push(marker);
}
Я нашел простое решение (я думаю):
var marker = new google.maps.Marker();
function Clear(){
marker.setMap(null);
}
Я только что попробовал это с помощью kmlLayer.setMap (null), и он сработал. Не уверен, что это будет работать с регулярными маркерами, но, похоже, работает правильно.
Кажется, что в V3 такой функции еще нет.
Люди предлагают сохранить ссылки на все маркеры, которые у вас есть на карте в массиве. И затем, когда вы хотите удалить все все, просто пройдите через массив и вызовите метод .setMap (null) для каждой из ссылок.
См. Этот вопрос для получения дополнительной информации / кода.
Моя версия:
google.maps.Map.prototype.markers = new Array();
google.maps.Map.prototype.getMarkers = function() {
return this.markers
};
google.maps.Map.prototype.clearMarkers = function() {
for(var i=0; i<this.markers.length; i++){
this.markers[i].setMap(null);
}
this.markers = new Array();
};
google.maps.Marker.prototype._setMap = google.maps.Marker.prototype.setMap;
google.maps.Marker.prototype.setMap = function(map) {
if (map) {
map.markers[map.markers.length] = this;
}
this._setMap(map);
}
Код изменен версии этого кода http://www.lootogo.com/googlemapsapi3/markerPlugin. html Я удалил необходимость вызова addMarker вручную.
Плюсы
Минусы
Я нашел использование библиотеки markermanager в проекте google-maps-utility-library-v3 как самый простой способ.
1. Настройте MarkerManager
mgr = new MarkerManager(map);
google.maps.event.addListener(mgr, 'loaded', function () {
loadMarkers();
});
2. Добавить маркеры в MarkerManager
function loadMarkers() {
var marker = new google.maps.Marker({
title: title,
position: latlng,
icon: icon
});
mgr.addMarker(marker);
mgr.refresh();
}
3. Чтобы очистить маркеры, вам просто нужно вызвать функцию clearMarkers()
MarkerManger
mgr.clearMarkers();
mgr.clearMarkers();
clearMarkers
do перебирают маркеры, вызывающие marker.setMap(null)
(я проверил источник). Было бы меньше работать, помещая их в массив и делая это самостоятельно.
– Kit Sunde
15 September 2012 в 16:33
Вы также можете сделать это так:
function clearMarkers(category){
var i;
for (i = 0; i < markers.length; i++) {
markers[i].setVisible(false);
}
}
Я не знаю, почему, но установка setMap(null)
в мои маркеры не работала для меня, когда я использую DirectionsRenderer
.
В моем случае мне пришлось называть setMap(null)
к моему DirectionsRenderer
.
Что-то вроде этого:
var directionsService = new google.maps.DirectionsService();
var directionsDisplay = new google.maps.DirectionsRenderer();
if (map.directionsDisplay) {
map.directionsDisplay.setMap(null);
}
map.directionsDisplay = directionsDisplay;
var request = {
origin: start,
destination: end,
travelMode: google.maps.TravelMode.DRIVING
};
directionsDisplay.setMap(map);
directionsService.route(request, function (result, status) {
if (status == google.maps.DirectionsStatus.OK) {
directionsDisplay.setDirections(result);
}
});
Чтобы очистить все накладки, включая полисы, маркеры и т. д., [...]
просто используйте:
map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);}
Вот функция, которая Я написал, чтобы сделать это на мне в приложении карты:
function clear_Map() {
directionsDisplay = new google.maps.DirectionsRenderer();
//var chicago = new google.maps.LatLng(41.850033, -87.6500523);
var myOptions = {
zoom: 8,
mapTypeId: google.maps.MapTypeId.ROADMAP,
center: HamptonRoads
}
map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
directionsDisplay.setMap(map);
directionsDisplay.setPanel(document.getElementById("directionsPanel"));
}
for (i in markersArray) {
markersArray[i].setMap(null);
}
работает только с IE.
for (var i=0; i<markersArray.length; i++) {
markersArray[i].setMap(null);
}
работает на chrome, firefox, ie ...
Я пробовал все предлагаемые решения, но ничего не работало для меня, пока все мои маркеры находились под кластером. В конце концов я просто положил это:
var markerCluster = new MarkerClusterer(map, markers,
{ imagePath: 'https://developers.google.com/maps/documentation/javascript/examples/markerclusterer/m' });
agentsGpsData[agentGpsData.ID].CLUSTER = markerCluster;
//this did the trick
agentsGpsData[agentId].CLUSTER.clearMarkers();
Другими словами, если вы кладете маркеры в кластере и хотите удалить все маркеры, вы вызываете:
clearMarkers();
Функция «set_map
», опубликованная в обоих ответах, больше не работает в API Google Maps v3.
Интересно, что случилось
Обновление:
Похоже, Google изменил свой API таким образом, что «set_map
» не «setMap
».
http://code.google.com/apis/maps/documentation/v3 /reference.html
Следующее от Anon работает отлично, хотя и с мерцанием при многократном очистке наложений.
Просто выполните следующее:
I. Объявить глобальную переменную:
var markersArray = [];
II. Определить функцию:
function clearOverlays() {
if (markersArray) {
for (i in markersArray) {
markersArray[i].setMap(null);
}
}
}
III. Нажимайте маркеры в «markerArray» перед вызовом следующего:
markersArray.push(marker);
google.maps.event.addListener(marker,"click",function(){});
IV. Вызовите функцию clearOverlays()
, где это необходимо.
Вот и все!
Надеюсь, что это поможет.
for(in in markersArray){}
, вероятно, не делает того, что вы ожидаете от него. Если Array
расширяется где-либо еще в коде, он будет перебирать и эти свойства, а не только индексы. Версия javascript этого markersArray.forEach()
, которая не поддерживается везде. Вам будет лучше с for(var i=0; i<markersArray.length; ++i){ markersArray.setMap(null); }
– Kit Sunde
15 September 2012 в 16:39
В новой версии v3 они рекомендовали хранить в массивах. как указано ниже.
См. пример в обзоре наложения .
var map;
var markersArray = [];
function initialize() {
var haightAshbury = new google.maps.LatLng(37.7699298, -122.4469157);
var mapOptions = {
zoom: 12,
center: haightAshbury,
mapTypeId: google.maps.MapTypeId.TERRAIN
};
map = new google.maps.Map(document.getElementById("map_canvas"), mapOptions);
google.maps.event.addListener(map, 'click', function(event) {
addMarker(event.latLng);
});
}
function addMarker(location) {
marker = new google.maps.Marker({
position: location,
map: map
});
markersArray.push(marker);
}
// Removes the overlays from the map, but keeps them in the array
function clearOverlays() {
if (markersArray) {
for (i in markersArray) {
markersArray[i].setMap(null);
}
}
}
// Shows any overlays currently in the array
function showOverlays() {
if (markersArray) {
for (i in markersArray) {
markersArray[i].setMap(map);
}
}
}
// Deletes all markers in the array by removing references to them
function deleteOverlays() {
if (markersArray) {
for (i in markersArray) {
markersArray[i].setMap(null);
}
markersArray.length = 0;
}
}
Демо-галерея Google демонстрирует, как они это делают:
http://code.google.com/apis/maps/documentation/javascript/examples/overlay-remove.html
Вы можете просмотреть исходный код, чтобы увидеть, как они добавляют маркеры.
Короче говоря, они сохраняют маркеры в глобальном массиве. При очистке / удалении они прокручивают массив и вызывают «.setMap (null)» в данном объекте маркера.
Однако этот пример показывает один «трюк». «Очистить» для этого примера означает удаление их с карты, но сохранение их в массиве, что позволяет приложению быстро повторно добавить их на карту. В некотором смысле это действует как «скрытие».
«Удалить» также очищает массив.
Просто пройдите по маркерам и удалите их из карты, пустые массивы маркеров карт после этого:
var markers = map.markers;
for(var i = 0; i < markers.length; i++) {
markers[i].setMap(null);
}
map.markers = [];
Я знаю, что это может быть простое решение, но это то, что я делаю
$("#map_canvas").html("");
markers = [];
Работает каждый раз для меня.
С помощью этого вы можете удалить весь маркер с карты.
map.clear();
Это поможет вам, это поможет мне ..
, если вы используете плагин gmap V3: $("#map").gmap("removeAllMarkers");
см.: http://www.smashinglabs.pl/gmap/documentation#after-load
Такая же проблема. Этот код больше не работает.
Я исправил его, изменив метод clearMarkers следующим образом:
set_map (null) ---> setMap (null)
google.maps.Map.prototype.clearMarkers = function() {
for(var i=0; i < this.markers.length; i++){
this.markers[i].setMap(null);
}
this.markers = new Array();
};
Документация обновлена, чтобы включить подробную информацию по теме: https://developers.google.com/maps/documentation/javascript/markers#remove
Это метод, который сам Google использует, по крайней мере, в одном примере:
var markers = [];
// Clear out the old markers.
markers.forEach(function(marker) {
marker.setMap(null);
});
markers = [];
Проверьте образец Google для полного примера кода:
https: // разработчики. google.com/maps/documentation/javascript/examples/places-searchbox
просто очистить Googlemap
mGoogle_map.clear();
Вы хотите удалить, как в их скрытии или удалении?
, если скрывать:
function clearMarkers() {
setAllMap(null);
}
, если вы хотите их удалить:
function deleteMarkers() {
clearMarkers();
markers = [];
}
обратите внимание, что я использую маркеры массивов, чтобы отслеживать их и вручную перезагружать.
Чтобы удалить все маркеры с карты, создайте функции примерно так:
1.addMarker (location): эта функция используется для добавления маркера на карту
2.clearMarkers (): эта функция удаляет все маркеры из карты, а не из массива
3.setMapOnAll (map): эта функция используется для добавления информации о маркерах в массив
4.deleteMarkers (): эта функция Удаляет все маркеры в массиве, удаляя ссылки на них.
// Adds a marker to the map and push to the array.
function addMarker(location) {
var marker = new google.maps.Marker({
position: location,
map: map
});
markers.push(marker);
}
// Sets the map on all markers in the array.
function setMapOnAll(map) {
for (var i = 0; i < markers.length; i++) {
markers[i].setMap(map);
}
}
// Removes the markers from the map, but keeps them in the array.
function clearMarkers() {
setMapOnAll(null);
}
// Deletes all markers in the array by removing references to them.
function deleteMarkers() {
clearMarkers();
markers = [];
}
Это было самое простое из всех решений, первоначально опубликованных YingYang 11 марта 14 в 14: 049 под первоначальным ответом на исходный вопрос пользователя
Я использую его же решение через 2,5 года с помощью google maps v3.18 и работает как шарм
markersArray.push(newMarker) ;
while(markersArray.length) { markersArray.pop().setMap(null); }
// No need to clear the array after that.
Решение довольно просто. Вы можете использовать метод: marker.setMap(map);
. Здесь вы определяете, на какой карте появится вывод.
Итак, если вы установите null
в этом методе (marker.setMap(null);
), контакт исчезнет.
Теперь вы можете написать функцию witch во время make make все маркеры на вашей карте.
Вы просто добавляете свои контакты в массив и объявляете их с помощью markers.push (your_new pin)
или этого кода, например:
// Adds a marker to the map and push to the array.
function addMarker(location) {
var marker = new google.maps.Marker({
position: location,
map: map
});
markers.push(marker);
}
Это функция ведьма может установить или удалить все маркеры вашего массива на карте:
// Sets the map on all markers in the array.
function setMapOnAll(map) {
for (var i = 0; i < markers.length; i++) {
markers[i].setMap(map);
}
}
Чтобы исчезнуть все ваши маркеры, вы должны вызвать функцию с помощью null
:
// Removes the markers from the map, but keeps them in the array.
function clearMarkers() {
setMapOnAll(null);
}
И чтобы удалить и исчезнуть все ваши маркеры, вы должны сбросить свой массив маркеров следующим образом:
// Deletes all markers in the array by removing references to them.
function deleteMarkers() {
clearMarkers();
markers = [];
}
Это мой полный код. Это самое простое, что я мог бы свести к минимуму. Будьте внимательны, вы можете заменить YOUR_API_KEY
в коде вашим ключевым API google:
<!DOCTYPE html>
<html>
<head>
<title>Remove Markers</title>
<style>
/* Always set the map height explicitly to define the size of the div
* element that contains the map. */
#map {
height: 100%;
}
</style>
</head>
<body>
<div id="map"></div>
<p>Click on the map to add markers.</p>
<script>
// In the following example, markers appear when the user clicks on the map.
// The markers are stored in an array.
// The user can then click an option to hide, show or delete the markers.
var map;
var markers = [];
function initMap() {
var haightAshbury = {lat: 37.769, lng: -122.446};
map = new google.maps.Map(document.getElementById('map'), {
zoom: 12,
center: haightAshbury,
mapTypeId: 'terrain'
});
// This event listener will call addMarker() when the map is clicked.
map.addListener('click', function(event) {
addMarker(event.latLng);
});
// Adds a marker at the center of the map.
addMarker(haightAshbury);
}
// Adds a marker to the map and push to the array.
function addMarker(location) {
var marker = new google.maps.Marker({
position: location,
map: map
});
markers.push(marker);
}
// Sets the map on all markers in the array.
function setMapOnAll(map) {
for (var i = 0; i < markers.length; i++) {
markers[i].setMap(map);
}
}
// Removes the markers from the map, but keeps them in the array.
function clearMarkers() {
setMapOnAll(null);
}
// Shows any markers currently in the array.
function showMarkers() {
setMapOnAll(map);
}
// Deletes all markers in the array by removing references to them.
function deleteMarkers() {
clearMarkers();
markers = [];
}
</script>
<script async defer
src="https://maps.googleapis.com/maps/api/js key=YOUR_API_KEY&callback=initMap">
</script>
</body>
</html>
Вы можете обратиться к google developer или полной документации, также , веб-сайт разработчика google .
Я использую стенографию, которая хорошо выполняет эту работу. Просто сделайте
map.clear();
Здесь вы можете найти пример удаления маркеров:
https://developers.google.com/maps/documentation/javascript/examples/marker-remove?hl=es
// Add a marker to the map and push to the array.
function addMarker(location) {
var marker = new google.maps.Marker({
position: location,
map: map
});
markers.push(marker);
}
// Sets the map on all markers in the array.
function setAllMap(map) {
for (var i = 0; i < markers.length; i++) {
markers[i].setMap(map);
}
}
// Removes the markers from the map, but keeps them in the array.
function clearMarkers() {
setAllMap(null);
}
// Deletes all markers in the array by removing references to them.
function deleteMarkers() {
clearMarkers();
markers = [];
}
google.maps.Map.prototype.markers = new Array();
google.maps.Map.prototype.addMarker = function(marker) {
this.markers[this.markers.length] = marker;
};
google.maps.Map.prototype.getMarkers = function() {
return this.markers
};
google.maps.Map.prototype.clearMarkers = function() {
for(var i=0; i<this.markers.length; i++){
this.markers[i].setMap(null);
}
this.markers = new Array();
};
Я не думаю, что в V3 есть один, поэтому я использовал вышеупомянутую пользовательскую реализацию.
Отказ от ответственности: я не писал этот код, но я забыл сохранить ссылку, когда я ее объединил в мою кодовую базу, поэтому я не знаю, откуда она взялась.
markersArray
в пустой массив вместо установки его длины, который я нахожу нечетным:markersArray = [];
– hellatan 28 November 2013 в 23:28while
для обработки массива:while(markersArray.length) { markersArray.pop().setMap(null); }
. После этого не нужно очищать массив. – YingYang 11 March 2014 в 17:04