dpylt7626401 2010-05-02 07:02
浏览 47

使用谷歌地图[关闭]获取到最近的地标(购物中心,医院和机场等)的距离

I am working on a project in which I have around 100000 addreses in major cities in India(it is a table in a database). I want to know if it is possible to obtain the distances to to nearest landmarks (Mall, Hospital, and Airport etc.). Ideally I want these distances to be mergeed to the parent table. We have Java and Php coders to get it done once we find out how to go about it. Any pointers will be of great help. Thank you.

  • 写回答

1条回答 默认 最新

  • doujiao4710 2010-08-22 20:10
    关注

    (I will probably state the obvious here, but, if that is the case, please overlook those points and read on.)

    General Distances

    ("As The Crow Flies" and for Limiting Search/Processing Loads)

    Determining Distances Between Two Points can be done within the SQL Database / SELECT statement.
    Reference: MySQL Great Circle (Haversine Formula)

    SELECT
      acos(
          cos(radians( $latitude0 ))
        * cos(radians( $latitude1 ))
        * cos(radians( $longitude0 ) - radians( $longitude1 ))
        + sin(radians( $latitude0 ))
        * sin(radians( $latitude1 ))
      )*6371 AS greatCircleDistanceKMs
    FROM yourTable
    

    That can be used dynamically, if the Lat/Long of the point you are using to compare is likely to change (ie the user's address, etc.), or could be used to perform an UPDATE of a number of files in the event that the point you are using to compare is set (the location of your office, etc.)

    If it is to be used dynamically, then it is also recommended that the set of rows this function is run against be limited.

    WHERE
      searchLatitude BETWEEN latitude+1 AND latitude-1
      AND searchLongitude BETWEEN longitude+1 and longitude-1
    

    Which will, essentially, create a 1 degree box around the searchLatitude/searchLongitude point, and reduce the number of calculations required.

    Exact Distances

    For Final Results

    The Google Directions API provides functionality for you to get the actual travelling distance between two points using a simple HTTP Request.

    An example URL would be, for "Chhatrapati Shivaji Int'l Airport" to "Taj Mahal Palace & Tower":
    http://maps.google.com/maps/api/directions/xml?origin=Chhatrapati+Shivaji+International+Airport&destination=Taj+Mahal+Palace+%26+Tower,+Mahakavi+Bhushan+Road,+Apollo+Bandar+Mumbai&sensor=false

    That will return an XML Response of:

    <?xml version="1.0" encoding="UTF-8"?>
    <DirectionsResponse>
     <status>OK</status>
     <route>
      <summary>Western Express Hwy/NH 8</summary>
      <leg>
       <step>
        <travel_mode>DRIVING</travel_mode>
        <start_location>
         <lat>19.0966100</lat>
         <lng>72.8656200</lng>
        </start_location>
        <end_location>
         <lat>19.1091100</lat>
         <lng>72.8539000</lng>
        </end_location>
        <polyline>
         <points>yxpsBcqv{LuAd@aEf@eBl@a^lQqDpBiS`PgAnAeArCoA`JiAbK</points>
         <levels>B???@?@???B</levels>
        </polyline>
        <duration>
         <value>112</value>
         <text>2 mins</text>
        </duration>
        <html_instructions>Head &lt;b&gt;north&lt;/b&gt; on &lt;b&gt;Sahar Rd&lt;/b&gt; toward &lt;b&gt;I A Project Rd&lt;/b&gt; &lt;div style=&quot;font-size:0.9em&quot;&gt;Pass by Priyadeep (on the left in 1.9&amp;nbsp;km)&lt;/div&gt;</html_instructions>
        <distance>
         <value>1978</value>
         <text>2.0 km</text>
        </distance>
       </step>
       <step>
        <travel_mode>DRIVING</travel_mode>
        <start_location>
         <lat>19.1091100</lat>
         <lng>72.8539000</lng>
        </start_location>
        <end_location>
         <lat>19.1061700</lat>
         <lng>72.8538800</lng>
        </end_location>
        <polyline>
         <points>}fssB{gt{LpHr@zCO|B_@</points>
         <levels>B??B</levels>
        </polyline>
        <duration>
         <value>52</value>
         <text>1 min</text>
        </duration>
        <html_instructions>Turn &lt;b&gt;left&lt;/b&gt; toward &lt;b&gt;Western Express Hwy/NH 8&lt;/b&gt;</html_instructions>
        <distance>
         <value>332</value>
         <text>0.3 km</text>
        </distance>
       </step>
       <step>
        <travel_mode>DRIVING</travel_mode>
        <start_location>
         <lat>19.1061700</lat>
         <lng>72.8538800</lng>
        </start_location>
        <end_location>
         <lat>19.0991500</lat>
         <lng>72.8540500</lng>
        </end_location>
        <polyline>
         <points>qtrsBwgt{L|BAbTqCfCQrBJ|IvB</points>
         <levels>B??@?B</levels>
        </polyline>
        <duration>
         <value>82</value>
         <text>1 min</text>
        </duration>
        <html_instructions>Continue straight onto &lt;b&gt;Western Express Hwy/NH 8&lt;/b&gt; &lt;div style=&quot;font-size:0.9em&quot;&gt;Pass by Giriraj Ceramic Products (on the left in 750&amp;nbsp;m)&lt;/div&gt;</html_instructions>
        <distance>
         <value>799</value>
         <text>0.8 km</text>
        </distance>
       </step>
       <step>
        <travel_mode>DRIVING</travel_mode>
        <start_location>
         <lat>19.0991500</lat>
         <lng>72.8540500</lng>
        </start_location>
        <end_location>
         <lat>19.0931000</lat>
         <lng>72.8507700</lng>
        </end_location>
        <polyline>
         <points>uhqsByht{LdMlDxG|AdC~@jBdAzBjB~@hAj@fA</points>
         <levels>B??@???B</levels>
        </polyline>
        <duration>
         <value>35</value>
         <text>1 min</text>
        </duration>
        <html_instructions>Slight &lt;b&gt;right&lt;/b&gt; toward &lt;b&gt;Western Express Hwy/NH 8&lt;/b&gt;</html_instructions>
        <distance>
         <value>772</value>
         <text>0.8 km</text>
        </distance>
       </step>
       <step>
        <travel_mode>DRIVING</travel_mode>
        <start_location>
         <lat>19.0931000</lat>
         <lng>72.8507700</lng>
        </start_location>
        <end_location>
         <lat>19.0507200</lat>
         <lng>72.8404700</lng>
        </end_location>
        <polyline>
         <points>{bpsBits{LjAfCr@rCbCdS`@vB\dAhAdBvBhB`Af@`Ch@bBHnAExCk@nAm@l@e@nGuF~Ay@fDaAlXcDxx@f@~UBbPPvVF|HLhXAdD\~Bn@lCxA|AbBjAdCz@nDfGfS</points>
         <levels>B????@???@??@????@@?????@???@??B</levels>
        </polyline>
        <duration>
         <value>252</value>
         <text>4 mins</text>
        </duration>
        <html_instructions>Continue straight onto &lt;b&gt;Western Express Hwy/NH 8&lt;/b&gt; &lt;div style=&quot;font-size:0.9em&quot;&gt;Pass by St Joseph's (on the left in 3.5&amp;nbsp;km)&lt;/div&gt;</html_instructions>
        <distance>
         <value>5666</value>
         <text>5.7 km</text>
        </distance>
       </step>
       <step>
        <travel_mode>DRIVING</travel_mode>
        <start_location>
         <lat>19.0507200</lat>
         <lng>72.8404700</lng>
        </start_location>
        <end_location>
         <lat>19.0429200</lat>
         <lng>72.8401400</lng>
        </end_location>
        <polyline>
         <points>_zgsB}sq{LfBjBj@ZxB^h@XZfAN~Ab@b@l@VnJEn@MrBg@lQgH</points>
         <levels>B???????@?@?B</levels>
        </polyline>
        <duration>
         <value>54</value>
         <text>1 min</text>
        </duration>
        <html_instructions>Exit onto &lt;b&gt;S V Rd&lt;/b&gt; &lt;div style=&quot;font-size:0.9em&quot;&gt;Pass by Saraswati Dattatray Electricals &amp;amp; Co., (SDEC) (on the left in 500&amp;nbsp;m)&lt;/div&gt;</html_instructions>
        <distance>
         <value>1019</value>
         <text>1.0 km</text>
        </distance>
       </step>
       <step>
        <travel_mode>DRIVING</travel_mode>
        <start_location>
         <lat>19.0429200</lat>
         <lng>72.8401400</lng>
        </start_location>
        <end_location>
         <lat>19.0332800</lat>
         <lng>72.8422800</lng>
        </end_location>
        <polyline>
         <points>gifsB{qq{LXAxCcAfLsEzDiAxDs@jC[lFQtIDdFR</points>
         <levels>B????@???B</levels>
        </polyline>
        <duration>
         <value>77</value>
         <text>1 min</text>
        </duration>
        <html_instructions>Continue onto &lt;b&gt;A S Gaya Marg/Lady Jamshedji Rd&lt;/b&gt; &lt;div style=&quot;font-size:0.9em&quot;&gt;Pass by Dawood Khan (on the left)&lt;/div&gt;</html_instructions>
        <distance>
         <value>1117</value>
         <text>1.1 km</text>
        </distance>
       </step>
       <step>
        <travel_mode>DRIVING</travel_mode>
        <start_location>
         <lat>19.0332800</lat>
         <lng>72.8422800</lng>
        </start_location>
        <end_location>
         <lat>19.0249800</lat>
         <lng>72.8406100</lng>
        </end_location>
        <polyline>
         <points>_mdsBg_r{LtI^lb@pFbBXrA`@</points>
         <levels>B???B</levels>
        </polyline>
        <duration>
         <value>62</value>
         <text>1 min</text>
        </duration>
        <html_instructions>At Emerald Surgicare (P) Ltd, continue onto &lt;b&gt;Lady Jamshedjee Rd&lt;/b&gt; &lt;div style=&quot;font-size:0.9em&quot;&gt;Pass by Petrol Pump (on the left)&lt;/div&gt;</html_instructions>
        <distance>
         <value>941</value>
         <text>0.9 km</text>
        </distance>
       </step>
       <step>
        <travel_mode>DRIVING</travel_mode>
        <start_location>
         <lat>19.0249800</lat>
         <lng>72.8406100</lng>
        </start_location>
        <end_location>
         <lat>19.0217700</lat>
         <lng>72.8424900</lng>
        </end_location>
        <polyline>
         <points>cybsBytq{LvEeB~@gAlB}CXSx@SfDC</points>
         <levels>B?????B</levels>
        </polyline>
        <duration>
         <value>41</value>
         <text>1 min</text>
        </duration>
        <html_instructions>Turn &lt;b&gt;left&lt;/b&gt; at Gadkari Chowk onto &lt;b&gt;NC Kelkar Rd&lt;/b&gt; &lt;div style=&quot;font-size:0.9em&quot;&gt;Pass by Dhyan Securities Pvt Ltd (on the right)&lt;/div&gt;</html_instructions>
        <distance>
         <value>432</value>
         <text>0.4 km</text>
        </distance>
       </step>
       <step>
        <travel_mode>DRIVING</travel_mode>
        <start_location>
         <lat>19.0217700</lat>
         <lng>72.8424900</lng>
        </start_location>
        <end_location>
         <lat>19.0179000</lat>
         <lng>72.8475600</lng>
        </end_location>
        <polyline>
         <points>aebsBq`r{L^c@tAm@XB^QpHeNbHoL</points>
         <levels>B?????B</levels>
        </polyline>
        <duration>
         <value>63</value>
         <text>1 min</text>
        </duration>
        <html_instructions>At the roundabout, take the &lt;b&gt;1st&lt;/b&gt; exit onto &lt;b&gt;Tilak Bridge&lt;/b&gt; &lt;div style=&quot;font-size:0.9em&quot;&gt;Pass by Vanmali Chk (on the right)&lt;/div&gt;</html_instructions>
        <distance>
         <value>702</value>
         <text>0.7 km</text>
        </distance>
       </step>
       <step>
        <travel_mode>DRIVING</travel_mode>
        <start_location>
         <lat>19.0179000</lat>
         <lng>72.8475600</lng>
        </start_location>
        <end_location>
         <lat>19.0131500</lat>
         <lng>72.8550800</lng>
        </end_location>
        <polyline>
         <points>{lasBg`s{LUa@Fs@RSv@DvZ{j@</points>
         <levels>B????B</levels>
        </polyline>
        <duration>
         <value>160</value>
         <text>3 mins</text>
        </duration>
        <html_instructions>At the roundabout, take the &lt;b&gt;2nd&lt;/b&gt; exit onto &lt;b&gt;Tilak Rd&lt;/b&gt; &lt;div style=&quot;font-size:0.9em&quot;&gt;Pass by Sargam Florists (on the left)&lt;/div&gt;</html_instructions>
        <distance>
         <value>987</value>
         <text>1.0 km</text>
        </distance>
       </step>
       <step>
        <travel_mode>DRIVING</travel_mode>
        <start_location>
         <lat>19.0131500</lat>
         <lng>72.8550800</lng>
        </start_location>
        <end_location>
         <lat>18.9933600</lat>
         <lng>72.8515000</lng>
        </end_location>
        <polyline>
         <points>eo`sBgot{LzB`AdDr@jMv@rHVhRN`Zj@vMjB~E^zEt@lIbCdDbC</points>
         <levels>B??@??@??@?B</levels>
        </polyline>
        <duration>
         <value>233</value>
         <text>4 mins</text>
        </duration>
        <html_instructions>Turn &lt;b&gt;right&lt;/b&gt; at Shobha Hospital onto &lt;b&gt;Rafi Ahmed Kidwai Marg&lt;/b&gt; &lt;div style=&quot;font-size:0.9em&quot;&gt;Pass by Sukkur Bhawan (on the left)&lt;/div&gt;</html_instructions>
        <distance>
         <value>2264</value>
         <text>2.3 km</text>
        </distance>
       </step>
       <step>
        <travel_mode>DRIVING</travel_mode>
        <start_location>
         <lat>18.9933600</lat>
         <lng>72.8515000</lng>
        </start_location>
        <end_location>
         <lat>18.9675800</lat>
         <lng>72.8448800</lng>
        </end_location>
        <polyline>
         <points>os|rB{xs{L~AbBbMtOtYjb@dAn@pCr@`ZsEp[aEvJ}AzPwBzBa@nBI`E@zFz@~Ad@^T</points>
         <levels>B??@?@????@????B</levels>
        </polyline>
        <duration>
         <value>203</value>
         <text>3 mins</text>
        </duration>
        <html_instructions>Continue onto &lt;b&gt;Barrister Nath Pai Marg&lt;/b&gt; &lt;div style=&quot;font-size:0.9em&quot;&gt;Pass by Everest Marine Ply - J. Himatlal &amp;amp; Co. (on the left in 1.6&amp;nbsp;km)&lt;/div&gt;</html_instructions>
        <distance>
         <value>3360</value>
         <text>3.4 km</text>
        </distance>
       </step>
       <step>
        <travel_mode>DRIVING</travel_mode>
        <start_location>
         <lat>18.9675800</lat>
         <lng>72.8448800</lng>
        </start_location>
        <end_location>
         <lat>18.9382900</lat>
         <lng>72.8379900</lng>
        </end_location>
        <polyline>
         <points>krwrBoor{LxCf@rBh@`Bf@nCpAnAFpAEfBSr@Y^?dk@nIdm@rJbEb@rz@xM</points>
         <levels>B????????????B</levels>
        </polyline>
        <duration>
         <value>246</value>
         <text>4 mins</text>
        </duration>
        <html_instructions>At Our Lady of the Rosary Church, continue onto &lt;b&gt;P D Mello Rd&lt;/b&gt; &lt;div style=&quot;font-size:0.9em&quot;&gt;Pass by Petrol Pump (on the left in 1.9&amp;nbsp;km)&lt;/div&gt;</html_instructions>
        <distance>
         <value>3356</value>
         <text>3.4 km</text>
        </distance>
       </step>
       <step>
        <travel_mode>DRIVING</travel_mode>
        <start_location>
         <lat>18.9382900</lat>
         <lng>72.8379900</lng>
        </start_location>
        <end_location>
         <lat>18.9344900</lat>
         <lng>72.8371000</lng>
        </end_location>
        <polyline>
         <points>i{qrBmdq{LjIlAvI|ArAD</points>
         <levels>B??B</levels>
        </polyline>
        <duration>
         <value>56</value>
         <text>1 min</text>
        </duration>
        <html_instructions>Continue onto &lt;b&gt;S Bhagat Singh Marg&lt;/b&gt; &lt;div style=&quot;font-size:0.9em&quot;&gt;Pass by SIB (on the left)&lt;/div&gt;</html_instructions>
        <distance>
         <value>433</value>
         <text>0.4 km</text>
        </distance>
       </step>
       <step>
        <travel_mode>DRIVING</travel_mode>
        <start_location>
         <lat>18.9344900</lat>
         <lng>72.8371000</lng>
        </start_location>
        <end_location>
         <lat>18.9321900</lat>
         <lng>72.8357900</lng>
        </end_location>
        <polyline>
         <points>qcqrB{~p{Ll@?bDf@^RtC`DbAf@</points>
         <levels>B????B</levels>
        </polyline>
        <duration>
         <value>32</value>
         <text>1 min</text>
        </duration>
        <html_instructions>Continue onto &lt;b&gt;Mint Rd&lt;/b&gt; &lt;div style=&quot;font-size:0.9em&quot;&gt;Pass by Mint Police Station (on the left)&lt;/div&gt;</html_instructions>
        <distance>
         <value>302</value>
         <text>0.3 km</text>
        </distance>
       </step>
       <step>
        <travel_mode>DRIVING</travel_mode>
        <start_location>
         <lat>18.9321900</lat>
         <lng>72.8357900</lng>
        </start_location>
        <end_location>
         <lat>18.9243200</lat>
         <lng>72.8320700</lng>
        </end_location>
        <polyline>
         <points>euprBuvp{LdIj@XNhAxArA`ApHfCtDX`C@lA@n@fAvCf@f@j@LNR?XnC`@</points>
         <levels>B???????@??????B</levels>
        </polyline>
        <duration>
         <value>97</value>
         <text>2 mins</text>
        </duration>
        <html_instructions>Continue onto &lt;b&gt;Shahid Bhagat Singh Rd/Shahid Bhagat SIngh Marg&lt;/b&gt; &lt;div style=&quot;font-size:0.9em&quot;&gt;Go through 1 roundabout&lt;/div&gt;&lt;div style=&quot;font-size:0.9em&quot;&gt;Pass by Town Hall (on the left)&lt;/div&gt;</html_instructions>
        <distance>
         <value>1022</value>
         <text>1.0 km</text>
        </distance>
       </step>
       <step>
        <travel_mode>DRIVING</travel_mode>
        <start_location>
         <lat>18.9243200</lat>
         <lng>72.8320700</lng>
        </start_location>
        <end_location>
         <lat>18.9230100</lat>
         <lng>72.8334800</lng>
        </end_location>
        <polyline>
         <points>_dorBm_p{LvFmERa@Ei@</points>
         <levels>B??B</levels>
        </polyline>
        <duration>
         <value>30</value>
         <text>1 min</text>
        </duration>
        <html_instructions>Turn &lt;b&gt;left&lt;/b&gt; at CBI onto &lt;b&gt;Mahakavi Bhushan Rd/Rajkavi Ghushan Marg&lt;/b&gt; &lt;div style=&quot;font-size:0.9em&quot;&gt;Pass by Kalajot Hospital (on the right)&lt;/div&gt;</html_instructions>
        <distance>
         <value>220</value>
         <text>0.2 km</text>
        </distance>
       </step>
       <step>
        <travel_mode>DRIVING</travel_mode>
        <start_location>
         <lat>18.9230100</lat>
         <lng>72.8334800</lng>
        </start_location>
        <end_location>
         <lat>18.9219500</lat>
         <lng>72.8335500</lng>
        </end_location>
        <polyline>
         <points>y{nrBghp{LdA_@t@KvA\</points>
         <levels>B??B</levels>
        </polyline>
        <duration>
         <value>46</value>
         <text>1 min</text>
        </duration>
        <html_instructions>Turn &lt;b&gt;right&lt;/b&gt; at Mumbai Hotels Booking onto &lt;b&gt;Appolo Bunder/P J Ramchandani Marg&lt;/b&gt; &lt;div style=&quot;font-size:0.9em&quot;&gt;Destination will be on the right&lt;/div&gt;</html_instructions>
        <distance>
         <value>124</value>
         <text>0.1 km</text>
        </distance>
       </step>
       <duration>
        <value>1933</value>
        <text>32 mins</text>
       </duration>
       <distance>
        <value>25826</value>
        <text>25.8 km</text>
       </distance>
       <start_location>
        <lat>19.0966100</lat>
        <lng>72.8656200</lng>
       </start_location>
       <end_location>
        <lat>18.9219500</lat>
        <lng>72.8335500</lng>
       </end_location>
       <start_address>Chhatrapati Shivaji International Airport, Vile Parle East, Mumbai, Maharashtra, India</start_address>
       <end_address>Taj Mahal Palace &amp; Tower, P J Ramchandani Marg, Apollo Bandar, Mumbai, Maharashtra 400001, India</end_address>
      </leg>
      <overview_polyline>
       <points>yxpsBcqv{LuAd@aEf@eBl@a^lQqDpBiS`PgAnAeArCoA`JiAbKpHr@nAChEk@|BAbTqCfCQl@@dAHhE`AbJhCxQvEfDdBzBjB~@hAvBnEr@rCbCdS`@vBh@xA|@pAvBhB`Af@`Ch@bBHnAExCk@nAm@l@e@nGuF~Ay@fDaAlXcDxx@f@~UBbPPvVF|HLhWClDX|Bh@fDdBz@x@l@z@~@rBz@nDfGfSfBjBj@ZxB^h@XZfAN~Ab@b@l@VnJErAYnA[vEgBPObJoDXAxCcAfLsEzDiAdB]vGw@jIM~DFzPr@lb@pFbBXrA`@vEeB~@gAlB}CXSx@SfDC^c@tAm@XB^QpHeNbHoLUa@Fs@RSv@DvZ{j@zB`AdDr@jMv@rHVhRN`Zj@vMjB`DRnFt@vJnChCfBjAhArNjQtYjb@dAn@pCr@`ZsEp[aEvJ}AzPwBzBa@nBI`E@zFz@~Ad@^TxCf@rBh@`Bf@nCpAnAFpAEfBSr@Y^?dk@nIdm@rJbEb@b\bFnWhEjOxBvI|A`CDbDf@^RtC`DbAf@dIj@XNhAxAzBxAhGnBtDX`C@lA@n@fAvCf@f@j@LNR?XnC`@vFmERa@Ei@dA_@t@KvA\</points>
       <levels>B???@?@???A??????@???@???@???@???A??@????@@?????@???@???@???????@?@?????????@??@??A???@?????@??????A??@??@???@?????@??????@??????@????@????????@??????@???@?????@??????B</levels>
      </overview_polyline>
     </route>
    </DirectionsResponse>
    

    The elements containing the details for the full journey are:

    DirectionsResponse > route > distance > value
    The distance, in a base unit, for the complete journey

    DirectionsResponse > route > distance > text
    The distance, in a plain English form, for the complete journey

    DirectionsResponse > route > duration > value
    The estimated travel time, in a base unit (seconds), for the complete journey

    DirectionsResponse > route > duration > text
    The estimated travel time, in a plain English form, for the complete journey

    You could then use the PHP DOMDocument CLASS to parse the result and extract these details.

    NOTE: From the Google Directions API page "Use of the Google Directions API is subject to a query limit of 2,500 directions requests per day. Individual directions requests may contain up to 8 intermediate waypoints in the request. Google Maps Premier customers may query up to 100,000 directions requests per day, with up to 23 waypoints allowed in each request."

    评论

报告相同问题?

悬赏问题

  • ¥15 如何用python向钉钉机器人发送可以放大的图片?
  • ¥15 vue3加ant-design-vue无法渲染出页面
  • ¥15 matlab(相关搜索:紧聚焦)
  • ¥15 基于51单片机的厨房煤气泄露检测报警系统设计
  • ¥15 路易威登官网 里边的参数逆向
  • ¥15 Arduino无法同时连接多个hx711模块,如何解决?
  • ¥50 需求一个up主付费课程
  • ¥20 模型在y分布之外的数据上预测能力不好如何解决
  • ¥15 processing提取音乐节奏
  • ¥15 gg加速器加速游戏时,提示不是x86架构