我有一张表格可以根据距离和邮政编码在医生附近查看。
以下是表格:
<form name="DoctorSearch" novalidate role="form">
<div style="margin-top:5px; margin-bottom:15px; text-align:center; font-size:8pt! important">
<strong>OR<br> SEARCH BY ZIP CODE RADIUS </strong>
</div>
<div style="text-align:center">
<select id="miles" name="distance">
<option disabled="disabled" selected="selected" value=""></option>
<option value="5">5</option>
<option value="10">10</option>
<option value="15">15</option>
<option value="20">20</option>
</select>
<span style="padding: 10px; border: 1px solid #ccc; border-radius: 4px; resize: vertical; margin-left: -3px; font-size: 15px;">
miles
</span>
<span style="margin-left:30px">
<input name="zip" allow-pattern="[\d\W]" id="zip" maxlength="5" placeholder="Zip code" type="text" />
</span>
</div>
<div style="margin-top:20px; margin-left:70px">
<div style="float:left">
<input onclick="return checkTextField();" type="submit" value="Search" />
</div>
<div style="float:left; margin-left:20px;">
<input type="reset" onclick="location.href = 'http://www.testsite.com';" value ="Reset" />
</div>
</div>
我能够编写一个基于邮政编码查询医生的查询(见下文)。但是,我不知道如何确定一切内容 特定范围(英里/公里)。我怎样才能做到这一点?
<cfset name_list1 = "UICC">
<cfset name_list2 = "Medi-Cal">
<cfset name_list3 = "RMG,RCMG,RFMG">
<cfquery name="DoctorSearch" datasource="source">
SELECT Distinct officeCity, officeName, officeAddressLine1, officeState, officeZipCode, officephone, OfficeHours
FROM DocList
where utilizedspecialty in (<cfqueryparam value="#name_list1#" list="true" cfsqltype="cf_sql_varchar">)
and network not like (<cfqueryparam value="#'%name_list2%'#" list="true" cfsqltype="cf_sql_varchar">)
and Company in (<cfqueryparam value="#name_list3#" list="true" cfsqltype="cf_sql_varchar">)
and officeZipCode like '%#zip#%'
order by officeCity
</cfquery>
任何帮助都将不胜感激。
答案 0 :(得分:0)
这是一堆复杂的数学。我使用了这个包中的代码:https://github.com/cfmaniac/CF-Locator 但整个包装可能就是您所需要的。它进行半径搜索。
答案 1 :(得分:0)
就像上面提到的那样,您将需要一个将zip与lat / lng值相关联的表。您将要查找距离给定邮编x英里以内的邮编。这就是我最近的做法。下面的函数首先调用查询以获取所提供拉链的经度/纬度。然后,它会在所提供的zip的x英里内创建一个经度/经度值范围。最后,它调用一个查询,以查找该lat / lng值范围内的所有邮编,并返回这些邮编。有了该列表,您就可以找到位于该邮政编码范围内的医生。
public any function getZips (required string zip, required numeric miles) {
rs = searchGateway.getCoordinatesByZip(zip);
if (!rs.recordcount) {
return [zip];
}
half = (miles / 2);
maxLat = (rs.lat + (half * 0.01666));
minLat = (rs.lat - (half * 0.01666));
maxLng = (rs.lng + (half * 0.01886));
minLng = (rs.lng - (half * 0.01886));
return searchGateway.getZipsByCoordinates(maxLat, minLat, maxLng, minLng);
}
答案 2 :(得分:-3)
只需使用相关的拉链进行cfhttp调用,然后解释响应。
在cf docs和gap api docs之间你应该能够到达那里。