获取和使用单张控制搜索从地址Lat Long网显示(Get and display lat long

2019-10-23 16:48发布

我使用leaflet.js和这个插件: https://github.com/stefanocudini/leaflet-search ,需要从地址搜索获取纬度和经度坐标,并把它们放入一个输入字段,或者只是能的一种方式使用它们...

答案很可能是在下面的代码,就无法弄清楚如何做到这一点?

                var geocoder = new google.maps.Geocoder();

                function googleGeocoding(text, callResponse)
                {
                    geocoder.geocode({address: text}, callResponse);
                }

                function filterJSONCall(rawjson)
                {
                    var json = {},
                        key, loc, disp = [];

                    for(var i in rawjson)
                    {
                        key = rawjson[i].formatted_address;

                        loc = L.latLng( rawjson[i].geometry.location.lat(), rawjson[i].geometry.location.lng() );

                        json[ key ]= loc;   //key,value format
                    }

                    return json;
                }

                map.addControl( new L.Control.Search({
                        callData: googleGeocoding,
                        filterJSON: filterJSONCall,
                        wrapper: 'findbox',
                        markerLocation: true,
                        autoType: false,
                        autoCollapse: true,
                        minLength: 5,
                        zoom: 10,
                        initial: true,
                        collapsed: false,
                        tipAutoSubmit: false,
                        autoResize: false,
                        text: 'Enter an Address'
                    }) );

Answer 1:

里面的瓣叶search.js文件你有一个调用的函数

_getLocation(this._input.value)

这个函数返回你所需要的信息。 你可以看到它被称为像这样的_handleSubmit函数内部:

var loc = this._getLocation(this._input.value);

如果你这样做:

console.log("Latitude: " + loc.lat);
console.log("Longitude: " + loc.lng);

波纹管这个呼叫瓣叶search.js你会得到你在控制台需要的信息。

我给你你所需要的信息,现在就看你使用它,你怎么样。 做一个公共函数,那么访问您的代码或任何你想要的内部。



Answer 2:

 var searchbox =  new L.Control.Search({
                            callData: googleGeocoding,
                            filterJSON: filterJSONCall,
                            wrapper: 'findbox',
                            markerLocation: true,
                            autoType: false,
                            autoCollapse: true,
                            minLength: 5,
                            zoom: 10,
                            initial: true,
                            collapsed: false,
                            tipAutoSubmit: false,
                            autoResize: false,
                            text: 'Enter an Address'
                        });

    searchbox.on('search_locationfound', function(e) {
                var locLat = e.latlng.lat;
                var locLng = e.latlng.lng;
                console.log(locLat+', '+locLng);
            });

这工作得很好我。 我希望我可以帮助其他人这一点。 :)



文章来源: Get and display lat long from address using Leaflet Control Search