Проблемы со строкой и заданием центра / маркера[GMaps-API-3] - PullRequest
0 голосов
/ 17 февраля 2012

Я новичок в JavaScript и API Карт Google. Я пытаюсь создать набор функций, которые:

1-Get и адрес и возврат latlng в виде строки, чтобы я мог сохранить ее в базе данных для дальнейшего использования

2 - Получить строку из базы данных или непосредственно из функции 1, чтобы централизовать карту и установить маркер.

Вот прогресс, которого я добился до сих пор:

var map;
var geocode;
function initializeMap(lat, lng){
var eventLatlng=new google.maps.LatLng(lat, lng);
var mapOptions={
zoom: 13,
center: eventLatlng,
mapTypeId:  google.maps.MapTypeId.ROADMAP
};

map = new google.maps.Map(document.getElementById("map_canvas"), mapOptions);
}

function getLocation(){
var address = document.getElementById("address").value;
geocoder = new google.maps.Geocoder();
geocoder.geocode({'address':address}, function(results,status){
    if(status == google.maps.GeocoderStatus.OK){
        var res = results[0].geometry.location;
        return res.toString();
    }else{
        alert("Geocoding failed:"+status)
    }
});
}

function setPlace(codeString){
var laln = stringToLatLng(codeString);
map.setCenter(laln);
var marker = new google.maps.Marker({map: map, position:laln});
}

function doAll(){
var test = getLocation();
setPlace(test);
}


function stringToLatLng(rcv){
var input = rcv.substring(1, rcv.length-1);
var latlngStr = input.split(",",2);
alert(latlngStr);
var lat = parseFloat(latlngStr[0]);
var lng = parseFloat(latlngStr[1]); 
latlngArray[i] = new google.maps.LatLng(lat, lng);
return latlngArray[i];
}

Хорошая часть этого кода была взята из официального руководства и даже Stackoverflow. InitialiuzeMap отлично работает. getLocation () также работает. Возможно, проблема в setPlace () и / или stringToLatLng ().

Что я уже пробовал:

1-Вернуть getLocation напрямую [без .toString ()] в setPlace - ничего не произошло.

2 - Когда я помещаю значение, возвращенное из getLocation () WITH toString () в stringToLatLng, он говорит, что длина не определена Может быть, getLocation не возвращает строку?

Ответы [ 2 ]

0 голосов
/ 27 февраля 2013

https://developers.google.com/maps/documentation/javascript/reference

toUrlValue (точность?: Число) строка
Возвращает строку вида "lat, lng" для этого LatLng.По умолчанию мы округляем значения lat / lng до 6 десятичных знаков.

0 голосов
/ 17 февраля 2012

Почему вы конвертируете в строку?

results[0].geometry.location 

содержит геокодированную широту, значение долготы как объект LatLng, а не как отформатированную строку.

Это можно использовать, например.

res.lat() and res.lng() 

даст вам координаты, необходимые для вставки базы данных, т.е.

var mydbUrl = 'mydb.php?lat='+res.lat()+'&lng='+res.lng();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...