कोई पता जावास्क्रिप्ट का उपयोग करने के लिए LatLong - मैं कैसे (15-20ms जल्दी से) मिल सकती है?

वोट
2

मैं एक socket.io जो एक नया पता हर 15-20ms पिंग्स की है। इस पते के लिए, मैं अक्षांश-लांग हो और Google नक्शे में मार्कर रखना होगा। इसलिए उन 15-20ms भीतर (यदि नहीं, 50-60ms भीतर हो सकता है) मैं जियोलोकेशन निकलना है। वर्तमान में मैं उपयोग कर रहा हूँ geocoder = new google.maps.Geocoder();और उसके बादgeocoder.geocode({address: data}, myFunction(){});

लेकिन मैप्स के लिए इस API बहुत धीमी है। यह 400-500ms जो renders मेरी मध्यवर्ती पता अशक्त का अनुरोध करता है में भौगोलिक स्थान देता है। मैं एक एपीआई जो बहुत तेजी से है की जरूरत है।

संदर्भ के लिए, नीचे socket.io के लिए कोड का टुकड़ा है:

geocoder = new google.maps.Geocoder();
    var socket = io.connect('http://localhost');
    socket.on('new_address', function (data) {
        //Gets called everytime a new request for GeoLocation comes
        geocoder.geocode({address: data}, placeMarker);
    });

var placeMarker = function(){
    //Add Marker to GoogleMaps
};
25/02/2013 को 13:29
का स्रोत उपयोगकर्ता
अन्य भाषाओं में...                            


1 जवाब

वोट
0

के रूप में टिप्पणी में उल्लेख किया है कि आप वास्तव में इंटरनेट पर 20ms के भीतर जवाब है, यह सिर्फ उस तरह से काम नहीं करता है उम्मीद नहीं कर सकते। क्या आप फिर भी क्या कर सकते हैं पते के साथ पूल के एक प्रकार बना रही है और जियोकोडर (या शायद 4 में से 3) चलो यह अपनी गति पर उस पर काम करते हैं।

यह शायद कुछ हद तक इस प्रकार दिखाई देगा (बस यहाँ एक दिशा देने उसे तुरंत काम करने की उम्मीद नहीं है):

var addresses = [];
var socket = io.connect('http://localhost');
socket.on('new_address', function (data) {
    //Gets called everytime a new request for GeoLocation comes
    //Adds an address to the list when it comes in from the backend
    adresses.push(data);
});

var geocoder = new google.maps.Geocoder();
//This function is called in a loop.
var addressCheck = function() {
    //When the list of addresses is empty, because we haven't received anything from the backend, just wait for a bit and call this function again.
    if(addresses.length == 0) {
        setTimeout(addressCheck, 400);
        return;
    }
    //Get the first one on the list.
    var data = addresses[0];
    //Process it.
    geocoder.geocode({address: data}, function() {
        placeMarker();
            //remove the first element from the adresses list.
        addresses.shift();
            //Call the entire function again, so it starts with a new address.
        addressCheck();
    });
}
var placeMarker = function(){
    //Add Marker to GoogleMaps
};

addressCheck();
25/02/2013 को 22:44
का स्रोत उपयोगकर्ता

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more