Получить заголовок Location, когда маркер перетаскивает, имея значения lat и lng - PullRequest
0 голосов
/ 28 февраля 2019

Я реализовал карту с местом автозаполнения, и маркер работает нормально, когда я перетаскиваю маркер в другое место, он дает мне значения широты и долготы. Теперь вопрос в том, хочу ли я название того места, куда я перетащил маркер, помните, что у меня естьуспешно достигнуто значение lat lng, но название еще не достигнуто.

 MapMarker: google.maps.Marker;
selectPlace(place) {

    this.places = [];
    let GMapMarker = new google.maps.Marker({
        position: new google.maps.LatLng(0, 0),
        map: this.map,
        title: "Temp",
        icon: 'https://chart.apis.google.com/chart? 
chst=d_map_pin_letter&chld=%E2%80%A2%7C00FF00',
        draggable: true,
        visible: true
    });
    let location = {
        lat: null,
        lng: null,
        name: place.name
    };
    let tempMap = this.map;
    this.placesService.getDetails({ placeId: place.place_id }, (details) => 
 {
        try {
            this.zone.run(() => {
                console.log('zone executed')
                location.name = details.name;
                location.lat = details.geometry.location.lat();
                location.lng = details.geometry.location.lng();
                this.saveDisabled = false;
                console.log("This is" + GMapMarker);
                GMapMarker.setPosition(new google.maps.LatLng(location.lat, 
 location.lng));
                GMapMarker.setVisible(true);
                GMapMarker.setTitle(location.name)
                this.map.controls.push(GMapMarker);
                //tempMap.setCenter(new google.maps.LatLng(43, 76));
                this.map.setCenter({ lat: location.lat, lng: location.lng 
  });

                this.location = location;
                //this.api.getLocation = this.location;

                this.MapMarker = GMapMarker;
                console.log(this.location);

            });
        } catch (error) {

            console.log(error.message)
        }


    });

}

searchPlace() {

    this.saveDisabled = true;
    if (this.query.length > 0 && !this.searchDisabled) {

        let config = {
            types: ['geocode'],
            input: this.query
        }

        this.autocompleteService.getPlacePredictions(config, (predictions, 
status) => {

            if (status == google.maps.places.PlacesServiceStatus.OK && 
predictions[0] != null) {

                this.places = [];

                predictions.forEach((prediction) => {

                    this.places.push(prediction);
                });
            }

        });

    } else {
        this.places = [];
    }

}

save() {
    this.api.getLocation = {
        name: this.MapMarker.getTitle(),
        lat: this.MapMarker.getPosition().lat(),
        lng: this.MapMarker.getPosition().lng()
    };
    this.viewCtrl.dismiss();//this.location
}

1 Ответ

0 голосов
/ 28 февраля 2019

используйте Google Reverse Geocoding: ссылка: https://developers.google.com/maps/documentation/javascript/examples/geocoding-reverse

geocodeLatLng(geocoder, map, infowindow) {
   console.log(this.location);
   var input=this.location;
   var latlng = {lat:this.MapMarker.getPosition().lat() , lng: 
   this.MapMarker.getPosition().lng()};
   console.log(latlng);
   geocoder.geocode({'location': latlng}, function(results, status) {
      if (status === 'OK') {
        if (results[0]) {
            console.log(results[0]);
            var x=(results[0].formatted_address); 
            console.log(x);

        } else {
          window.alert('No results found');
        }
      } else {
        window.alert('Geocoder failed due to: ' + status);
      }
   });
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...