javascript - kml 文件中多边形的 LatLngBounds?

标签 javascript google-maps-api-3 gis kml polygon

我是谷歌地图和 API 的新手,试图通过点击将 map 平移到某个区域。我没有花太多时间在 API 引用中找到我需要的内容,并且完全不确定如何去做,所以我没有太多,但这是我到目前为止所拥有的。

我想让它单击任何区域都会平移并放大以显示该区域的大部分,我相信这就是panToBounds是为了做。

大部分功能将来自单击文本名称并加载显示正确位置的 map ,而不是单击 map 本身

function initialize_neighbourhoodmap(neighbourhood_name) {
    var latlng = new google.maps.LatLng(42.949442,-81.228125);

    var zoom = 11;
    var neighbourhood_center = get_neighbourhood_center();

    var myOptions = {
      zoom: zoom,
      center: latlng,
      mapTypeId: google.maps.MapTypeId.ROADMAP
    };

    map = new google.maps.Map(document.getElementById("neighbourhood_map"),
        myOptions);

    var neighbourhoods = new google.maps.KmlLayer('http://maps.google.com/maps/ms?authuser=0&ie=UTF8&hl=en&oe=UTF8&vps=3&msa=0&output=kml&msid=217366496682144933685.0004bf3be50d3cd7ad1c2', {suppressInfoWindows: true, preserveViewport:true});
    neighbourhoods.setMap(map);

    google.maps.event.addListener(neighbourhoods, 'click', function(KmlFeatureData) {
        var neighbourhood_name = KmlFeatureData.featureData.name;
    load_neighbourhood(neighbourhood_name, neighbourhoods);
    window.location = "#neighbourhood-neighbourhood "+neighbourhood_name;
    });

    if(typeof neighbourhood_name !== 'undefined'){
        load_neighbourhood(neighbourhood_name, neighbourhood_center);
    }
}

function load_neighbourhood (neighbourhood_name, neighbourhoods) {
    var neighbourhoodbounds = nonexistentgetboundsfunction(neighbourhood_name);
    map.panToBounds(neighbourhood_center[neighbourhood_name][0]);
    $('#neighbourhood h2').html('neighbourhood '+neighbourhood_name);
}

最佳答案

您确实需要其他功能吗?在我看来,用户界面变得很尴尬。嗯,这是:http://jsfiddle.net/g343k/3/

我遇到了一个奇怪的“bug”,或者有些人可能称之为“feature”,它与KML多边形相关联。单击某个区域时, map 将平移到该区域的中心;但是,当单击外部 Planning_district 区域时, map 会平移到框的中心,而不是单击的位置(Sean Mickey 在 FireFox 12 中进行测试,它会平移到单击的位置)。除了将规划区分割为数十个较小的框之外,我想不出解决此问题的方法:( 现在我已经编写了忽略对规划区的点击的代码。

google.maps.event.addListener(neighbourhoods, 'click', function(KmlFeatureData) {
        var neighbourhood_name = KmlFeatureData.featureData.name;
    load_neighbourhood(neighbourhood_name, neighbourhoods);
    window.location = "#neighbourhood-neighbourhood "+neighbourhood_name;
    // ADDED
    // Consider what to do when this outer area is clicked
    if(KmlFeatureData.featureData.name!="planning_districts_2008") {
      map.panTo(KmlFeatureData.latLng);
    }

    });

    // LEFT OUT
    //if(typeof neighbourhood_name !== 'undefined'){
    //    load_neighbourhood(neighbourhood_name, neighbourhood_center);
    //}

    // ADDED
    google.maps.event.addListener(map, 'click', function(event) {
      map.panTo(event.latLng);
    });

关于javascript - kml 文件中多边形的 LatLngBounds?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10456290/

相关文章:

javascript - 在页面显示到屏幕之前删除 DOM 元素(在 Chrome 扩展中)

css - firefox 中的相对位置导致 google-map-markers 可点击区域出现问题

google-maps-api-3 - 如何在 map 上画出 50 条路线并且仍然能够区分所有 50 条路线?

python - ArcPy、Python - 根据连字符的多次出现分割字符串

android - GeoLocation API 在移动设备上的安全性如何?

javascript - 从 url 检索后,Vue2 数据未在模板中更新

javascript - HTML2PDF自动打印

javascript - 用输入字段 Javascript/Angular2 替换某些单词

javascript - 将 Bootstrap 3 工具提示添加到 google maps API v3 标记

javascript - 传单:panTo Web 墨卡托坐标 (EPSG 3857)