是否可以从python创建谷歌地图?

时间:2014-03-12 04:33:55

标签: python google-maps

我正在使用pygeocoder来使用像。

这样的代码获取lat和long地址
from pygeocoder import Geocoder

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

这非常有效。有没有办法在python中实际生成带有这些点的谷歌地图网页?能够尽可能地使用一种编程语言会很棒。

我在网上搜索了很多解决方案,但没找到合适的东西。也许这不可能?

3 个答案:

答案 0 :(得分:14)

如果你想创建一个动态网页,你会在某些时候拥有来生成一些Javascript代码,这些代码可以使得KML不必要的开销。它更容易生成生成正确映射的Javascript。 The Maps API documentation是一个很好的起点。它还有例子with shaded circles。这是一个简单的类,用于生成仅带标记的代码:

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)

答案 1 :(得分:1)

可以编写脚本将地理编码数据输出到KML文件中(非常类似于HTML结构,但用于阅读Google地图数据)。然后,您可以将您的KML文件上传到Google地图上的“我的地图”,并查看您收集的任何数据点。 Here is a description with screenshots of how to import KML files to Google Maps (you'll need a Google account, I believe)Google Developers reference for KML is here

您是否希望创建一个包含嵌入式Google地图的网页,以便在Python中可视化这些数据?那会更复杂(如果可能的话)。

答案 2 :(得分:1)

您可以使用gmplot库

https://github.com/vgm64/gmplot

它生成一个html文档,脚本连接到谷歌地图API。您可以使用标记,散点,线,多边形和热图来创建动态地图。

示例:

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")

Heatmap example (static image)