2016-11-02 11 views
-6

Я ищу API геолокации, который я могу подключить к своему проекту PhpStorm.Где я могу получить API геолокации

Мне нужно выпадающее меню, которое, во-первых, загрузит все страны мира, при выборе страны другая выпадающая страна заполнит провинции/штаты на основе страны, выбранной выше. Там после выпадающего списка, который будет заполнять города на основе провинции или штата выше и, наконец, еще один выпадающий список, который будет заполнять окраины города, перечисленные выше.

+4

До сих пор я не вижу, как это не имеет ничего общего с PhpStorm ... – LazyOne

+0

Что касается фактического вопроса: 1) https://github.com/geocoder-php/Geocoder 2) https://community.algolia.com/places/ – LazyOne

+0

он может применяться к любому языку, но я подумал, что лучше всего указать, какую структуру я использую. – FlyBYNight

ответ

4

здесь ваше полное решение

использование карты апи

https://maps.googleapis.com/maps/api/js?sensor=false&libraries=geometry,places&ext=.js

использовать этот CSS

http://vikku.info/programming/js/geodata-jsr-class.js

<div class='main'> 

<h1></h1> 

    <form id="myform"> 
     <div class="contents"> 
<b>*Select area</b> 

      <p><span>Continent:</span> 
       <select name="continent" id="continent" onchange="getplaces(this.value,'country');"> 
        <option value=""></option> 
       </select> 
      </p> 
      <p><span>Country:</span> 
       <select name="country" id="country" onchange="getplaces(this.value,'province');"> 
        <option value=""></option> 
       </select> 
      </p> 
      <p><span>State/Provice:</span> 
       <select name="province" id="province" onchange="getplaces(this.value,'region')"> 
        <option value=""></option> 
       </select> 
      </p> 
      <p><span>County/Region:</span> 
       <select name="region" id="region" onchange="getplaces(this.value,'city')"> 
        <option value=""></option> 
       </select> 
      </p> 
      <p><span>City:</span> 
       <select name="city" id="city" onchange="zoomto(this.value);codeAddress(placedata[this.value].name)"> 
        <option value=""></option> 
       </select> 
      </p> 
     </div> 
    </form> 
    <div id="map_canvas"></div> 

javascript 


var whos = null; 
var placedata = []; 
var map; 
var geocoder = new google.maps.Geocoder(); 

function getplaces(gid, src) { 
    if (!! placedata[gid]) { 
     map.setCenter({ 
      lat: parseFloat(placedata[gid].lat), 
      lng: parseFloat(placedata[gid].lng) 
     }); 
     switch (src) { 
      case "continent": 
       map.setZoom(3); 
       break; 
      case "country": 
       map.setZoom(5); 
       break; 
      case "province": 
       map.setZoom(6); 
       break; 
      case "region": 
       map.setZoom(7); 
       break; 
      case "city": 
       map.setZoom(8); 
       break; 
     } 
     codeAddress(placedata[gid].name); 
    } 

    whos = src; 


    // var request = "http://ws.geonames.org/childrenJSON?geonameId="+gid+"&callback=getLocation&style=long"; 
    var request = "http://www.geonames.org/childrenJSON?geonameId=" + gid + "&callback=listPlaces&style=long"; 
    aObj = new JSONscriptRequest(request); 
    aObj.buildScriptTag(); 
    aObj.addScriptTag(); 
} 

function listPlaces(jData) { 
    counts = jData.geonames.length < jData.totalResultsCount ? jData.geonames.length : jData.totalResultsCount; 
    who = document.getElementById(whos); 
    who.options.length = 0; 

    if (counts) who.options[who.options.length] = new Option('Select', ''); 
    else who.options[who.options.length] = new Option('No Data Available', 'NULL'); 

    for (var i = 0; i < counts; i++) { 
     who.options[who.options.length] = new Option(jData.geonames[i].name, jData.geonames[i].geonameId); 
     placedata[jData.geonames[i].geonameId] = jData.geonames[i]; 
    } 

    delete jData; 
    jData = null; 
} 
function zoomto(gid) { 
    if (!! placedata[gid]) { 
     map.setCenter({ 
      lat: parseFloat(placedata[gid].lat), 
      lng: parseFloat(placedata[gid].lng) 
     }); 
     map.setZoom(14); 
    } 
} 
function codeAddress(address) { 
    geocoder.geocode({ 
     'address': address 
    }, function (results, status) { 
     if (status == google.maps.GeocoderStatus.OK) { 
      if (!!results && !!results[0] && !!results[0].geometry && !!results[0].geometry.viewport) { 
       map.fitBounds(results[0].geometry.viewport); 
      } else if (!!results && !!results[0] && !!results[0].geometry && !!results.geometry.bounds) { 
       map.fitBounds(results[0].geometry.bounds); 
      } else { 
       map.setCenter(results[0].geometry.location); 
      } 
     } else { 
      alert("Geocode was not successful for the following reason: " + status); 
     } 
    }); 
} 

window.onload = function() { 
    getplaces(6295630, 'continent'); 
    map = new google.maps.Map(document.getElementById('map_canvas'), { 
     zoom: 3, 
     center: { 
      lat: 0, 
      lng: 0 
     } 
    }); 
}; 

здесь скрипку:

http://jsfiddle.net/geocodezip/xq4h95ux/3/

если вы просто хотите, IP- адреса и область пользователя, то вы делаете это как так

$.getJSON("http://ip-api.com/json/?callback=?", function (data) { 
 
    console.log(data); 
 
    $('#IP_Address').append("Your IP: " + data.query); 
 
    $('#Country').append("Your Country: " + data.country); 
 
    $('#City').append("Your City: " + data.city); 
 
    $('#region').append("Your Region : " + data.region); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script> 
 
<div id="IP_Address"></div> 
 
<div id="Country"></div> 
 
<div id="City"></div> 
 
<div id="region"></div>

если вы хотите, чтобы получить эти то вы можете использовать

http://www.geoplugin.net/php.gp

если у вас есть IP-адрес, то вы можете передать его как так

http://www.geoplugin.net/php.gp?ip= $ youIpAddress

(для этого случая 49.200.208.108)

он сбросит

a: 18: {s:17:"geoplugin_request";s:14:"49.200.208.108";s:16:"geoplugin_status";i:200;s:16:"geoplugin_credit";s:145:"Some of the returned data includes GeoLite data created by MaxMind, available from <a href=\'http://www.maxmind.com\'>http://www.maxmind.com</a>.";s:14:"geoplugin_city";s:6:"Mumbai";s:16:"geoplugin_region";s:13:"Mahārāshtra";s:18:"geoplugin_areaCode";s:1:"0";s:17:"geoplugin_dmaCode";s:1:"0";s:21:"geoplugin_countryCode";s:2:"IN";s:21:"geoplugin_countryName";s:5:"India";s:23:"geoplugin_continentCode";s:2:"AS";s:18:"geoplugin_latitude";s:6:"18.975";s:19:"geoplugin_longitude";s:7:"72.8258";s:20:"geoplugin_regionCode";s:2:"16";s:20:"geoplugin_regionName";s:13:"Mahārāshtra";s:22:"geoplugin_currencyCode";s:3:"INR";s:24:"geoplugin_currencySymbol";s:7:"&#8360;";s:29:"geoplugin_currencySymbol_UTF8";s:3:"₨";s:27:"geoplugin_currencyConverter";s:6:"66.695";}

десериализации полученных данных (или json_decode) и получить всю информацию

+0

Это полное решение не думает о phpStorm, это просто редактор – EaBangalore

+0

Вы собираетесь использовать запрос JSON-P? Нет причин для этого. Это ужасно неуверенно, и вы даже не делаете этого по HTTPS. Не только это, но вы не избегаете каких-либо данных запроса. – Brad

+0

@EaBangalore, какой отличный ответ, я искал это за последние 4 месяца, вы решили мою проблему – EaB

 Смежные вопросы

  • Нет связанных вопросов^_^