Добавить контур "Область поиска" на результат Google Maps - PullRequest
38 голосов
/ 14 марта 2012

В прошлом году Google добавил схемы поиска в свои предложения, о которых сообщалось во многих местах, и которые можно увидеть на самих картах Google. Например, здесь , и сообщается здесь и здесь .

Если говорить прямо, это когда Google добавляет схему, касающуюся поискового запроса. Если вы будете искать город, почтовый индекс или почтовый индекс, Google выделит этот регион карты. Пример:

90210 Search on Google Maps

По-видимому, это было недоступно через API и только через собственные веб-ресурсы Google.

Недавно я заметил некоторые другие домены, использующие эту функцию, например, в Twitter .

Существует ли отдельный API Twitter, который используют другие крупные организации? Эта функция была добавлена, но еще не документирована? Или я просто пропустил объявление и не могу найти никаких документов?

Ответы [ 4 ]

27 голосов
/ 21 октября 2016

Поскольку еще нет решения, предлагаемого API-интерфейсом Карт, и ручное заполнение координат не является чьим-то делом, это жемчужина альтернативы. Нашел этот ответ на веб-сайте ГИС - абсолютный спасатель (спас бы jurihandl много минут рисования Калгари, выше; D):

Вы можете получить координаты многоугольника в json для использования с googlemaps. используя openstreetmap. Перейти к http://nominatim.openstreetmap.org/. Поиск место как "Сан-Франциско, Калифорния"

Нажмите "Подробности"

Найдите идентификатор OSM и скопируйте его (control + c), например: 2018776

Вставьте ID http://polygons.openstreetmap.fr/index.py и загрузите файл JSON

Источник: ГИС

17 голосов
/ 15 марта 2012

Наброски, которые вы видите там, взяты из твиттера, они, должно быть, сохранили их.

Посмотрите на json-файл, который запрашивается при вызове твиттер-страницы: http://api.twitter.com/1/geo/id/c3f37afa9efcf94b.json

Я пробовал, geometry.coordinates[0][0] определяет точный многоугольник (угадайте схему для Остина).

Когда вы попробуете это, обратите внимание, что порядок пары - lng,lat, а не lat,lng

Так что twitter-geo-API может быть хорошим началом для реализации контуров, к счастью, twitter поддерживает JSONP для решения на стороне клиента.

См. Пример: http://jsfiddle.net/doktormolle/MRYm3/

<edit>

Twitter-API был изменен, пример больше не работает (требуется аутентификация)

</edit>

9 голосов
/ 05 июня 2013

Я нашел довольно хорошее решение, чтобы нарисовать границу города.

Вот довольно крутой инструмент, где вы можете нарисовать границу города. Вы можете быть настолько точным, насколько вам нравится: http://www.birdtheme.org/useful/v3tool.html

Справа вы видите предварительный просмотр вашего кода. Вы можете выбрать между KML и javascript. Переключиться на JavaScript. Затем скопируйте ваши координаты.

Вот полный сайт, где вы можете увидеть границу Брюсселя (Европа).

<!DOCTYPE html>
<html lang="en-US">
 <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>::Maps ::</title>
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
    <script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?sensor=false&key=AIzaSyD0X4v7eqMFcWCR-VZAJwEMfb47id9IZao"></script>
    <script type="text/javascript">
        var map;

        //COORDS
        var brussels = [
        new google.maps.LatLng(50.835866,4.258575),
        new google.maps.LatLng(50.818083,4.244499),
        new google.maps.LatLng(50.811358,4.276428),
        new google.maps.LatLng(50.813094,4.302177),
        new google.maps.LatLng(50.773162,4.338226),
        new google.maps.LatLng(50.764259,4.384918),
        new google.maps.LatLng(50.793132,4.482422),
        new google.maps.LatLng(50.810274,4.450836),
        new google.maps.LatLng(50.821120,4.476585),
        new google.maps.LatLng(50.852342,4.462852),
        new google.maps.LatLng(50.866861,4.421310),
        new google.maps.LatLng(50.895021,4.430580),
        new google.maps.LatLng(50.911692,4.413757),
        new google.maps.LatLng(50.912342,4.395561),
        new google.maps.LatLng(50.898486,4.377708),
        new google.maps.LatLng(50.900868,4.328957),
        new google.maps.LatLng(50.889174,4.293251),
        new google.maps.LatLng(50.880294,4.297028),
        new google.maps.LatLng(50.861878,4.279175),
        new google.maps.LatLng(50.855593,4.288788),
        new google.maps.LatLng(50.837817,4.282608),
        new google.maps.LatLng(50.835866,4.259605)
        ];

        $(document).ready(function () {
            //WHERE TO CENTER YOUR MAP
            var latlng = new google.maps.LatLng(50.834999,4.387665);
            var myOptions = {
                zoom: 10,
                center: latlng,
                mapTypeId: google.maps.MapTypeId.ROADMAP
            };
            map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);

            var BrusselsHightlight;

            //DRAW THE POLYGON OR POLYLINE
            BrusselsHightlight = new google.maps.Polygon({
                paths: brussels,
                strokeColor: "#6666FF",
                strokeOpacity: 0.8,
                strokeWeight: 2,
                fillColor: "#6666FF",
                fillOpacity: 0.35
            });
            BrusselsHightlight.setMap(map);

        });

    </script>
    <style type="text/css">
        html,body { height: 100%; margin: 0px; padding: 0px; }
        #map_canvas {
            width:600px;
            height:400px;
        }       
    </style>
</head>
<body >
<div id="map_canvas">

</div>
<!--main-->
<div id="map_cord"></div>
</body> 
</html>

Это сработало очень хорошо для меня.

0 голосов
/ 29 марта 2018

Твиттер api Географическая конечная точка НЕ ​​даст вам границу города,

, что они предоставляют вам ТОЛЬКО ограничивающий прямоугольник с 5 точками (широта, длина)

это то, что я получаю из твиттера apiгео для Сан-Франциско enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...