Можно ли создать карту google из python?

Я использую pygeocoder чтобы получить lat и длинные адреса, используя код, как.

from pygeocoder import Geocoder

for a in address:
    result = Geocoder.geocode(a)
    print(result[0].coordinates)

это работает очень хорошо. Есть ли способ создать веб-страницу google maps с этими точками на ней из python? Было бы здорово иметь возможность оставаться на одном языке программирования, насколько это возможно.

Я много искал в интернете для решения, но не нашел ничего подходящего. Может быть, это невозможно?

3 ответов


Если вы хотите создать динамическую веб-страницу, вы будете в какой-то момент есть для генерации некоторого кода Javascript, который IMHO делает KML ненужными накладными расходами. Его проще создать Javascript, который генерирует правильную карту. документация API Карт хорошее место для начала. Он также имеет примеры С кружками. Вот простой класс для генерации кода только с маркерами:

from __future__ import print_function

class Map(object):
    def __init__(self):
        self._points = []
    def add_point(self, coordinates):
        self._points.append(coordinates)
    def __str__(self):
        centerLat = sum(( x[0] for x in self._points )) / len(self._points)
        centerLon = sum(( x[1] for x in self._points )) / len(self._points)
        markersCode = "\n".join(
            [ """new google.maps.Marker({{
                position: new google.maps.LatLng({lat}, {lon}),
                map: map
                }});""".format(lat=x[0], lon=x[1]) for x in self._points
            ])
        return """
            <script src="https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false"></script>
            <div id="map-canvas" style="height: 100%; width: 100%"></div>
            <script type="text/javascript">
                var map;
                function show_map() {{
                    map = new google.maps.Map(document.getElementById("map-canvas"), {{
                        zoom: 8,
                        center: new google.maps.LatLng({centerLat}, {centerLon})
                    }});
                    {markersCode}
                }}
                google.maps.event.addDomListener(window, 'load', show_map);
            </script>
        """.format(centerLat=centerLat, centerLon=centerLon,
                   markersCode=markersCode)


if __name__ == "__main__":
        map = Map()
        # Add Beijing, you'll want to use your geocoded points here:
        map.add_point((39.908715, 116.397389))
        with open("output.html", "w") as out:
            print(map, file=out)

можно написать сценарий для вывода ваших геокодированных данных в файл KML (так же, как структура HTML, но для чтения данных Google Maps). Затем вы можете загрузить файл KML в" Мои карты " на Google Maps и посмотреть, какие точки данных вы собрали. Вот описание со скриншотами того, как импортировать файлы KML в Google Maps (вам понадобится учетная запись Google, я считаю) и ссылка разработчиков Google для KML здесь.

вы хотите создать веб-страницу со встроенной картой Google, которая визуализирует эти данные из Python? Это было бы сложнее (если это возможно).


вы можете использовать библиотеку gmplot

https://github.com/vgm64/gmplot

Он генерирует html-документ со скриптами, подключенными к API google maps. Вы можете создавать динамические карты с маркерами, рассеянными точками, линиями, полигонами и тепловыми картами.

пример:

import gmplot

gmap = gmplot.GoogleMapPlotter(37.428, -122.145, 16)

gmap.plot(latitudes, longitudes, 'cornflowerblue', edge_width=10)
gmap.scatter(more_lats, more_lngs, '#3B0B39', size=40, marker=False)
gmap.scatter(marker_lats, marker_lngs, 'k', marker=True)
gmap.heatmap(heat_lats, heat_lngs)

gmap.draw("mymap.html")

пример тепловой карты (статическое изображение)