如何在GoogleMaps API V3

时间:2017-08-08 18:34:36

标签: javascript angularjs google-maps-api-3

当我想从仅地址定义几个标记时,我遇到了问题。这些地址没有他们的坐标所以首先我们必须找到他们的坐标,然后设置标记。问题是有些地方没有正确得到它们的坐标。有些人得到了另一个地方的坐标。

发生了什么的一个例子,想象一下,在我的一系列地方,我们有“纽约”,“伦敦”,“巴黎”,“柏林”等。当我创建“纽约”的标记时,除了纬度和经度之外,一切都是正确的,因为它被分配了芝加哥的纬度和经度。

JavaScript的:

 self.setMarks = function(lista, m){  
        var marcadores = [];
        //We've got several maps, so first we define the map that 
        //belongs the marker first. This works 
        var mapa = null;
        switch(m){
            case 0: //Peninsula
                mapa = map;
                break;
            case 1: //Canarias;
                mapa = map3;
                break;
            case 2: //Baleares
                mapa = map2;
                break;
        }
        //We've got an array called lista with the marker information
        for (var i = 0; i < lista.length; i++){
            var address = lista[i].nombreProvincia + ", Spain";                   
            servicios.getLocation(address).then(function(response){
                //The problem starts here
                let latitud = response.data.results[0].geometry.location.lat;
                let longitud = response.data.results[0].geometry.location.lng;
                let mark = new google.maps.Marker({
                    position: new google.maps.LatLng(latitud, longitud),
                    id: lista[0].idProvincia,
                    label: lista[0].total,
                    title: lista[0].nombreProvincia + "\n" + lista[0].total,
                    map: mapa
                });
                //The problem finish here
                //We add a listener to each marker, this works fine
                mark.addListener("click", function(){         
                    switch(m){
                        case 0:
                            self.getPeninsulaProperties(mark.id);
                            break;
                        case 1:
                            self.getMarksFromCanarias(mark.id);
                            break;
                        case 2:
                            self.getMarksFromBaleares(mark.id);
                            break;
                    }                    
                });
                marcadores.push(mark);       
                lista.splice(0, 1);
            });
            //console.log("Fin dirección!!!");            
        };
}

self.getLocation = function(address){
    var promise = $q.defer();
    $http.get("http://maps.google.com/maps/api/geocode/json?address=" + address + "&sensor=false")
        .then(function(mapData) {
            promise.resolve(mapData);
        },function(error){
            console.log("Error al obtener latitud y longitud: " + error);
    }); 

    return promise.promise;
};

从一个地方得不到正确的坐标我做错了什么?

1 个答案:

答案 0 :(得分:0)