是否可以自定义Google / Yahoo Map?

时间:2009-12-03 20:15:20

标签: google-maps

我是Google Map / Yahoo Map的绝对新手。我想知道技术上是否可以要求在任何国家显示任何城市动态(我的意思是通过传递参数)然后在城市附近的地图上显示一些图片?

感谢。

4 个答案:

答案 0 :(得分:5)

你可以通过多种方式实现这一目标,其中一些比其他方式更漂亮。

  1. 您可以使用GInfoWindow在任何位置显示包含图片的弹出窗口。
  2. 您可以使用此处提供的便捷库之一http://code.google.com/p/gmaps-utility-library-dev/来帮助您显示这些图片。
  3. 然而,我建议使用http://econym.org.uk/gmap/ewindows.htm来创建一个类似于GInfoWindow的窗口,但该窗口由您设置。只需设置窗口样式,使其看起来只是一个叠加的图片。
  4. 您可以选择使用z-index和jQuery等JavaScript库进行手动定位。
  5. 另外,要回答问题的开头是,您可以使用GMap的.setCenter()方法将地图重新​​聚焦到任何位置。 setCenter(),GInfoWindow的文档以及更多http://code.google.com/apis/maps/documentation/reference.html

    的文档

答案 1 :(得分:4)

只是开始自己学习。

这是一个很好的入门链接:

http://code.google.com/apis/maps/

答案 2 :(得分:3)

关于第二个问题,

  

在附近的地图上显示一些图片   这个城市?

我喜欢@ andykram上面的回复,但我之前使用Maps API提供的Panoramio图层实现了此功能。它可能会有点拥挤,但它是人们习惯的界面,因为将它包含在地图中非常简单,这次只是你的解决方案。

只需将以下内容添加到地图初始化功能中即可。

var myLayer = new GLayer("com.panoramio.all");
map.addOverlay(myLayer);

至于动态显示Google地图中的任何城市,该解决方案很容易实现 - 您需要对城市名称进行地理编码。这可以通过触发像onclick这样的事件的函数来完成。

function showAddress(address) {
  if (geocoder) {
    geocoder.getLatLng(
      address,
      function(point) {
        if (point) {
          map.setCenter(point, 13);
          var marker = new GMarker(point);
          map.addOverlay(marker);
          marker.openInfoWindowHtml(address);
        }
      }
    );
  }
}

如果遇到障碍,请先尝试一下 - http://econym.org.uk/gmap/ - 可能是网络上GMaps API的最佳资源。

答案 3 :(得分:0)

如果您通常使用地图,GeoExt是一个不错的框架。您也可以访问其他类型的地图(OSM,GeoServer)。