Au cours du développement du projet de cette année, je suis d'abord entré en contact avec le développement WEB mobile. Je l'ai développé en apprenant le HTML5, principalement en utilisant la technologie JQuery Mobile. J'ai trouvé que cela ne convenait pas aux produits Internet. Utilisez simplement quelques fonctions. Je suis entré en contact avec la fonction de positionnement pour la première fois lors du processus de développement du WEB mobile. Grâce aux principaux moteurs de recherche, j'ai découvert que le positionnement sur le téléphone mobile se fait via le navigateur. Lors de la première utilisation du navigateur sur PC, une invite apparaîtra indiquant « Voulez-vous activer la fonction de positionnement ? » Lorsque le patron a vu cette invite, il a estimé que ce n'était pas bon pour l'expérience utilisateur. Si ce n'est pas bon, alors je peux l'implémenter d'une autre manière. . Ce n’est pas grave. L’expression du patron a radicalement changé et il a dit : Non. Vous devriez vivre cette expérience. Ne faisons-nous pas tout cela pour gagner du temps afin de pouvoir publier de nouvelles fonctionnalités le plus rapidement possible ?
1. Méthode de positionnement WEB du téléphone portable :
var getLocation = function (successFunc, errorFunc) { //successFunc obtient la fonction de rappel de réussite du positionnement, errorFunc obtient le rappel d'échec de positionnement
//Définissez d'abord la ville par défaut
var defCity = {
identifiant : '000001',
nom : « Ville de Pékin »,
Date : curDateTime()//Obtention de la méthode de l'heure actuelle
};
//Ville par défaut
$.cookie('VPIAO_MOBILE_DEFAULTCITY', JSON.stringify(defCity), { expire : 1, chemin : '/' });
Si (navigateur.géolocalisation) {
navigator.geolocation.getCurrentPosition(function (position) {
var lat = position.coords.latitude;
var lon = position.coords.longitude;
//var map = new BMap.Map("container"); //Créer une instance de carte
var point = new BMap.Point(lon, lat); // Créer des coordonnées de point
var gc = new BMap.Geocoder();
gc.getLocation(point, fonction (rs) {
var addComp = rs.addressComponents;
var curCity = {
identifiant : '',
Nom : addComp.province,
date : curDateTime()
};
//Ville de localisation actuelle
$.cookie('VPIAO_MOBILE_CURRENTCITY', JSON.stringify(curCity), { expire : 7, chemin : '/' });
//alert(addComp.province ", " addComp.city ", " addComp.district ", " addComp.street);
Si (successFunc != non défini)
successFunc(addComp);
});
},
fonction (erreur) {
commutateur (code d'erreur) {
cas 1 :
alert("Service de localisation refusé.");
pause;
cas 2 :
alert("Les informations de localisation ne peuvent pas être obtenues temporairement.");
pause;
cas 3 :
alert("Délai expiré pour obtenir les informations de localisation.");
pause;
par défaut :
alert("Erreur inconnue.");
pause;
}
var curCity = {
identifiant : '000001',
nom : 'Pékin',
date : curDateTime()
};
//Ville par défaut
$.cookie('VPIAO_MOBILE_DEFAULTCITY', JSON.stringify(curCity), { expire : 1, chemin : '/' });
if (errorFunc != non défini)
errorFunc(erreur);
}, { délai d'attente : 5 000, activateHighAccuracy : true });
} autre {
alert("Votre navigateur ne prend pas en charge l'obtention d'informations de localisation géographique.");
Si (errorFunc != non défini)
errorFunc("Votre navigateur ne prend pas en charge l'obtention d'informations de localisation géographique.");
>
};
var showPosition = fonction (position) {
var lat = position.coords.latitude;
var lon = position.coords.longitude;
//var map = new BMap.Map("container"); // Créer une instance de carte
var point = new BMap.Point(lon, lat); // Créer des coordonnées de point
var gc = new BMap.Geocoder();
gc.getLocation(point, fonction (rs) {
var addComp = rs.addressComponents;
var curCity = {
identifiant : '',
nom : addComp.province,
date : curDateTime()
};
//Ville de localisation actuelle
$.cookie('VPIAO_MOBILE_CURRENTCITY', JSON.stringify(curCity), { expire : 7, chemin : '/' });
//alert(addComp.province ", " addComp.city ", " addComp.district ", " addComp.street);
});
};
var showPositionError = fonction (erreur) {
Changer (code d'erreur) {
cas 1 :
alert("Service de localisation refusé.");
pause ;
cas 2 :
alert("Les informations de localisation ne peuvent pas être obtenues temporairement.");
pause ;
cas 3 :
alert("Délai expiré pour obtenir les informations de localisation.");
pause ;
par défaut :
alert("Erreur inconnue.");
pause ;
>
var curCity = {
identifiant : '000001',
nom : « Ville de Pékin »,
Date : curDateTime()
};
//Ville par défaut
$.cookie('VPIAO_MOBILE_DEFAULTCITY', JSON.stringify(curCity), { expire : 1, chemin : '/' });
};
La condition préalable est d'introduire l'API Baidu : http://fw.qq.com/ipaddress">>
Utilisation de l'interface Sina : http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=js
Méthode de test multi-régions : http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=js&ip=127.0.0.1
Interface d'adresse IP NetEase Youdao (cela doit être testé)
http://www.youdao.com/smartresult-xml/search.s?type=ip&q=IPAdresse
Interface de requête Taobao (GET)
<script><br>
var ip = "124.127.108.133";<br>
var url = "<a href="http://ip.taobao.com/service/getIpInfo.php?ip">http://ip.taobao.com/service/getIpInfo.php?ip</a>=" ip;<br>
$.getJSON(url, fonction (json) {<br>
var maprovince2 = json.data.area;<br>
var maville2 = json.data.region;<br>
alert("Votre ville est :" maprovince2 maville2);<br>
});<br>
</script>
Interface API de la base de données d'adresses IP du Pacifique
http://whois.pconline.com.cn/?ip=[ipchaîne d'adresse]
De plus : il existe également des interfaces correspondantes fournies par Google, Sohu, etc. Vous pouvez l'essayer vous-même.
Interface de requête d'adresse IP Sohu (GBK par défaut) : http://pv.sohu.com/cityjson
Interface de requête d'adresse IP Sohu (l'encodage peut être défini) : http://pv.sohu.com/cityjson?ie=utf-8
Autre interface de requête d'adresse IP de Sohu : http://txt.go.sohu.com/ip/soip
3. Obtenir la méthode IP du client
<script><br>
var url = 'http://chaxun.1616.net/s.php?type=ip&output=json&callback=?&_=' Math.random();<br>
$.getJSON(url, function(data) {<br>
alerte(data.Ip);<br>
});<br>
</script>
C'est tout pour aujourd'hui. Il reste encore beaucoup de travail à faire. Vous pourrez essayer d'autres interfaces lorsque vous aurez le temps. Tout le monde est invité à venir proposer de meilleures méthodes.