Не могу центрировать карту на маркере в gmap3

Итак, я попытался найти документацию о том, как центрировать карту по маркеру, но у меня почему-то это не работает.

В примере на странице Gmap3 он отлично работает без добавления "центра " к параметрам карты, для меня даже с "center:latLng" это не сработает.

поэтому я пробовал другую комбинацию, ничего не работает для меня ..

затем я попытался извлечь широту и долготу отдельно и проверил числа, которые я получаю на сайте, который позволяет вводить широту и долготу, и я понял, что координаты не совпадают с координатами маркера, поэтому я не знаю, извлекать ли их правильно или есть другая проблема.

это мой код прямо сейчас-

$("#mapholder").gmap3({
    getgeoloc:{
        callback : function(latLng){
        //here is where i tried to get the lat and lng out of the latLng
            lat = parseFloat(latLng.A.toFixed(6));
            console.log(typeof(lat));
            lng = parseFloat(latLng.k.toFixed(6));
            lat_Lng = latLng;
            console.log("latitude: "+lat+" , longtitude: "+lng);
            console.log("typeof latlng: "+typeof(latLng));
            if (latLng){
                $("#mapholder").gmap3({
                    map:{
                        options:{
                            center:latLng,
                            zoom: 5
                        }
                    },
                    marker:{ 
                        latLng:latLng
                    }
                 });
             }
        }
    }
});

другой способ, которым я пробовал, был

center:[lat,lng]

и даже без какого-либо центра, как в демо, это не сработало.

Большое спасибо за любую помощь!

ОБНОВЛЕНИЕ

может ли это иметь какое-либо отношение к функции обратного вызова, которая не допускает эти параметры?

Я также пытался добавить тип данных к маркеру, чтобы он говорил «Вы здесь!», Это тоже не работает.


person Michael    schedule 09.04.2014    source источник
comment
Каков результат console.log("latitude: "+lat+" , longtitude: "+lng); и какое приблизительное местоположение он должен показывать?   -  person dkasipovic    schedule 09.04.2014
comment
Д.Касипович - дает вывод очков, а не там, где установлен маркер. проверил через этот сайт itouchmap.com/latlong.html.   -  person Michael    schedule 09.04.2014
comment
Я не уверен, что следую. Можете ли вы опубликовать онлайн-пример где-нибудь?   -  person dkasipovic    schedule 09.04.2014
comment
wernersound.com/examples/gmap_example в ссылке MyPlaces   -  person Michael    schedule 09.04.2014


Ответы (2)


Скрипт в том виде, в каком он есть, работает корректно, в вашей демо есть проблема:

Когда gmap3 создает экземпляр карты, а вкладка «Мои метки» скрыта, #mapholder не имеет размера (в данном случае центр карты — это верхний левый угол карты).

Когда вы выбираете вкладку «Мои места» в первый раз после создания экземпляра карты, вы должны инициировать событие изменения размера для карты и переназначить центр:

  $(link).fadeIn(1000, function(){
    $(link).addClass("current");
    if(link==='#myPlaceSection' && lat_Lng){
        $('#mapholder').gmap3({trigger:"resize"});
        $('#mapholder').gmap3({map:{options:{center:lat_Lng}}});
        lat_Lng=null;
      }
    }  
  );
person Dr.Molle    schedule 09.04.2014
comment
Большое спасибо! это было! спасибо, что нашли время и просмотрели сценарий по ссылке, которую я разместил, я очень ценю это. я много боролся с этим. поэтому каждое изменение, которое я хочу сделать на карте, мне нужно сделать в условии if? - person Michael; 09.04.2014
comment
условие if в моем предложении соответствует только первому выбору вкладки «Мои места» после создания карты. - person Dr.Molle; 09.04.2014
comment
Хорошо, теперь я вижу, что вы установили lat_Lng на ноль. так что теперь, если мне нужно добавить маркеры или какие-либо другие изменения на карте во время полей ввода или что-то еще, как вы предлагаете, я бы это сделал? - person Michael; 09.04.2014

В соответствии со ссылкой вам нужно указать latLong, как показано ниже:

map:{
  options:{
  center: new google.maps.LatLng(lat,lng),
  zoom: 5
},

Ссылка здесь.

Попробуй это. Это сработает для вас.

person Code Lღver    schedule 09.04.2014
comment
координаты, которые я получаю из latLng, используя lat = parseFloat(latLng.A.toFixed(6)); неверны .. как я могу получить точные координаты маркера? - person Michael; 09.04.2014
comment
@ Майкл, что ты получаешь в переменной latLng? - person Code Lღver; 09.04.2014
comment
объект выглядит так: O {k: 32.066158, A: 34.77781900000002, toString: функция, j: функция, equals: функция…} - person Michael; 09.04.2014
comment
@ Майкл Я думаю, что это не координаты, поэтому, пожалуйста, предоставьте полные данные, которые вы получаете. - person Code Lღver; 09.04.2014
comment
я проверил эти поплавки на этом сайте itouchmap.com/latlong.html, и мне дали место, которое мне было нужно для переключения между переменными в src-коде, который я написал так - lat = parseFloat(latLng.k.toFixed(6)); и lng = parseFloat(latLng.A.toFixed(6)); но все равно не центрировал карту по этим координатам - person Michael; 09.04.2014