簡體   English   中英

Google Maps API V3搜索KML文件

[英]Google Maps API V3 Search KML File

我想搜索KML文件,以查看特定地址是否在覆蓋范圍內。 目前,我已將地址轉換為地理編碼。 但是,我不確定添加此功能需要什么代碼。

這是當前的代碼:

function initialize() {
    var infowindow = new google.maps.InfoWindow({
        content: '',
        suppressMapPan:true
    });

    var myLatlng = new google.maps.LatLng(35.910200,-84.085100);   
        var myOptions = {
            zoom: 12,
            center: myLatlng,
            mapTypeId: google.maps.MapTypeId.ROADMAP
        };

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

    var d = new Date();    
    var n = d.getMilliseconds();
    var nyLayer = new google.maps.KmlLayer(
        'http://www.cspc.net/neighborhoods/groups.kml?rand=' + n,
        {  suppressInfoWindows: true, map: map});

    google.maps.event.addListener(nyLayer, 'click', function(kmlEvent) {    
        var url = kmlEvent.featureData.snippet;
        var groupName = kmlEvent.featureData.name;
        var insideContent = "<div style='width:250px;'><h2>" + groupName +
            "</h1><p>We have a neighborhood contact in your area! </p>" +
            "<p><a href='" + url + "' target='_blank'>Get connected!</a>" +
            " They look forward to hearing from you.</p><p>If you have " +
            "any additional questions, please contact our " +
            "<a href='http://www.cspc.net/communitylife' target='_blank'>" +
            "Community Life</a> staff for more information. Betsy Palk, " +
            "the Administrative Assistant, may be reached at:<br/><br/>" +
            "<b>Email:</b> <a href='mailto:betsypalk@cspc.net'>" +
            "betsypalk@cspc.net</a><br/><b>Phone:</b>  865-291-5268<p></div>";

        var clickPos = kmlEvent.latLng;
        var posX = new google.maps.LatLng(clickPos.lat(), clickPos.lng());
        infowindow.close();
        infowindow.setPosition(posX);
        infowindow.setContent(insideContent);
        infowindow.open(map);
    });

    eventMapClick = google.maps.event.addListener(map, 'click',
        function(event) {
            var marker = new google.maps.Marker({ position: event.latLng }); 
            var outsideContent = "<div style='width:250px;'><h2>Oops!</h1>" +
            "<p> It seems we don't have a neighborhood contact in your " +
            "area.</p><p>Please contact our <a " +
            "href='http://www.cspc.net/communitylife' target= '_blank'>" +
            "Community Life</a> staff for more information. " +
            "Betsy Palk, the Administrative Assistant, may be reached at:" +
            "<br/><br/><b>Email: </b> <a href='mailto:betsypalk@cspc.net'>" +
            "betsypalk@cspc.net</a><br/><b>Phone:</b>  865-291-5268<p></div>";

            infowindow.setContent(outsideContent);
            infowindow.open(map, marker);
        });
    }

    var geocoder = new google.maps.Geocoder();

    function searchAddress(address) {
        geocoder.geocode(
            {'address': address},
            function(results, status) {
                if (status == google.maps.GeocoderStatus.OK) {
                    var loc = results[0].geometry.location;
                    // use loc.lat(), loc.lng()
                    window.alert(loc);
                }
                else {
                    window.alert("Not found: " + status);
                }
            }
        );
    };

如果我理解您的問題,我相信您希望公式確定一個點( google.maps.LatLng )是否在您的KML地Placemark定義(屬於您的名稱,例如: Neighborhood Group 1 )之一之內。 在每個地Placemark ,定義一個Polygon ,在每個Polygon ,定義一組coordinates ,這些coordinates代表Polygon的頂點。

使用通過地理編碼檢索的PolygonLatLngcoordinates ,您可以從以下公式開始,然后選擇最適合您的公式:

在SO上也提出了一個非常類似的問題: 確定多邊形內標記的緯度

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM