Java кэширует целые объекты в диапазоне -128 to 127
. Поэтому, когда вы пытаетесь присвоить значение в этом диапазоне объекту wrapper
, операция boxing
вызовет метод Integer.valueOf
и, в свою очередь, назначит ссылку на объект, уже находящийся в пуле.
С другой стороны, если вы присвоите значение вне этого диапазона ссылочному типу wrapper
, Integer.valueOf
создаст для этого значения новый объект Integer
. И, следовательно, сравнение reference
для объектов Integer
, имеющих значение вне этого диапазона, даст вам false
Итак,
Integer i = 127; --> // Equivalent to `Integer.valueOf(127)`
Integer i2 = 127;
// Equivalent to `Integer.valueOf(128)`
// returns `new Integer(128)` for value outside the `Range - [-128, 127]`
Integer i3 = 128;
Integer i4 = 128;
System.out.println(i == i2); // true, reference pointing to same literal
System.out.println(i3 == i4); // false, reference pointing to different objects
Но, когда вы создаете свое целое число экземпляры с использованием оператора new
, новый объект будет создан в куче. Итак,
Integer i = new Integer(127);
Integer i2 = new Integer(127);
System.out.println(i == i2); // false
У вас есть проблема с областью действия вашей переменной. Я разместил пример, который исправляет ваш код здесь: http://jsfiddle.net/XwbsU/3/
Вы должны получить всплывающее окно геолокации браузера, когда вы нажмете «Найти меня ! '.
Надеюсь, это поможет вам.
Вот быстрый взлом. Я рекомендую этот плагин https://github.com/domoritz/leaflet-locatecontrol
var loadMap = function (id) {
var HELSINKI = [60.1708, 24.9375];
var map = L.map(id);
var tile_url = 'http://{s}.tile.osm.org/{z}/{x}/{y}.png';
var layer = L.tileLayer(tile_url, {
attribution: 'OSM'
});
map.addLayer(layer);
map.setView(HELSINKI, 19);
map.locate({setView: true, watch: true}) /* This will return map so you can do chaining */
.on('locationfound', function(e){
var marker = L.marker([e.latitude, e.longitude]).bindPopup('Your are here :)');
var circle = L.circle([e.latitude, e.longitude], e.accuracy/2, {
weight: 1,
color: 'blue',
fillColor: '#cacaca',
fillOpacity: 0.2
});
map.addLayer(marker);
map.addLayer(circle);
})
.on('locationerror', function(e){
console.log(e);
alert("Location access denied.");
});
};
loadMap('map');