Javascript 谷歌地图API V3搜索KML文件
我想搜索一个KML文件,看看一个特定的地址是否在覆盖范围内。目前,我已将地址转换为地理代码。但是,我不确定添加此功能需要什么代码 以下是当前代码:Javascript 谷歌地图API V3搜索KML文件,javascript,google-maps-api-3,kml,Javascript,Google Maps Api 3,Kml,我想搜索一个KML文件,看看一个特定的地址是否在覆盖范围内。目前,我已将地址转换为地理代码。但是,我不确定添加此功能需要什么代码 以下是当前代码: function initialize() { var infowindow = new google.maps.InfoWindow({ content: '', suppressMapPan:true }); var myLatlng = new google.maps.LatLng(35
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);
}
}
);
};
函数初始化(){
var infowindow=new google.maps.infowindow({
内容:“”,
suppressMapPan:对
});
var mylatng=new google.maps.LatLng(35.910200,-84.085100);
变量myOptions={
缩放:12,
中心:myLatlng,
mapTypeId:google.maps.mapTypeId.ROADMAP
};
var map=new google.maps.map(
getElementById(“地图画布”),myOptions;
var d=新日期();
var n=d.getmillizes();
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=“”+组名+
“我们在您所在地区有一个社区联系人!”+
“”+
“他们期待着您的来信。如果您有”+
“如有任何其他问题,请联系我们的”+
“有关详细信息,请与工作人员联系。Betsy Palk,”+
可通过以下地址联系到行政助理:
+
“电子邮件:
电话:865-291-5268”;
var clickPos=kmlEvent.latLng;
var posX=new google.maps.LatLng(clickPos.lat(),clickPos.lng());
infowindow.close();
设置位置(posX);
infowindow.setContent(insideContent);
打开(地图);
});
eventMapClick=google.maps.event.addListener(映射“单击”,
功能(事件){
var marker=new google.maps.marker({position:event.latLng});
var outsideContent=“哎呀!”+
“看来我们在你家里没有邻居的联系”+
“区域。有关详细信息,请与我们的员工联系。”+
行政助理贝齐·帕尔克的联系电话:+
“
电子邮件:
电话:865-291-5268”;
infowindow.setContent(outsideContent);
信息窗口。打开(地图、标记);
});
}
var geocoder=new google.maps.geocoder();
函数搜索地址(地址){
地理编码(
{'address':address},
功能(结果、状态){
if(status==google.maps.GeocoderStatus.OK){
var loc=results[0]。geometry.location;
//使用loc.lat(),loc.lng()
窗口警报(loc);
}
否则{
窗口警报(“未找到:+状态”);
}
}
);
};
如果我理解您的问题,我相信您希望使用公式来确定点(google.maps.LatLng
)是否属于KMLPlacemark
定义之一(即您给出的名称,例如:邻里组1
)。在每个Placemark
中定义一个多边形
,在每个多边形
中定义一组坐标
,它们表示多边形
的顶点
使用多边形中的坐标
和通过地理编码检索的板条
,您可以从这些公式开始,选择最适合您的公式:
这里也有人问了一个非常类似的问题,所以: