Answers:
根据README.TXT:
API注意事项
地理字段包含有关存储的地理>数据的九列信息。它的核心是“ wkt”列,其中以“知名文本”(WKT)格式存储完整的几何图形。所有其他列都是从WKT列派生的元数据。列如下:
'geom'原始价值。默认情况下,存储为WKB,加载为
WKT'geo_type'几何类型(点,线串,多边形等)
'lat'重心(纬度或Y)
'lon'重心(经度或X)
'top'边界框顶部(纬度或最大值Y)“底部”边界框底部(纬度或最小值Y)
“左”边界框左侧(经度或Min X)
“右”边界框右侧(经度或Max X)
“ geohash”与geom列值等效的Geohash使用提供的窗口小部件保存地理字段时,这些值将通过geofield_compute_values函数传递,以便计算相关值。默认情况下,基于WKT计算从属值,但是可以将其覆盖以基于其他列计算值。例如,可以这样调用geofield_compute_values:
geofield_compute_values($ values,'latlon');
这将基于经/纬度列计算wkt字段(和所有其他字段),得出一个点。作为开发人员,请记住是否要使用node_load和node_save修改地理信息,这一点很重要。确保通过geofield_compute_values运行任何已修改的geofield实例,以使所有列保持一致。
转换为:
$spot->field_coordinates[LANGUAGE_NONE][0] = geofield_compute_values(
array(
'lat' => $venue->location->lat,
'lon' => $venue->location->lng,
), GEOFIELD_INPUT_LAT_LON);
使用这样的值,我能够以编程方式更新geofield的数据:
$lat = 42.281646;
$lon = -83.744222;
$geofield = array(
'geom' => "POINT ($lon $lat)",
'geo_type' => 'point',
'lat' => $lat . "000000",
'lon' => $lon . "000000",
'left' => $lon . "000000",
'top' => $lat . "000000",
'right' => $lon . "000000",
'bottom' => $lat . "000000"
);
$lang = $node->language;
$node->field_position[$lang][0] = $geofield;
{
"nid":123,
"field_position":{"und":[
{"geom":{"lat":"42.2808256","lon":"-83.7430378"}}
]}
}
在这两种情况下,地理字段的小部件均为Latitude / Longitude
,因此其他小部件的结果可能有所不同,尤其是在服务模块中。
geohash
,请确认,谢谢。
geohash
值,但是也许您可以使用geofield_compute_values
上面答案中提到的函数从lat / lng中获取该值。
一个node-edit-form
大胆的猜测:您可能会在整个过程中运行您的节点,以激发地理魔术师。
看看drupal_form_submit(),$form_state['values']
从普通的手动提交的节点类型的“添加内容”表单中观察,并以编程方式重建它们以在drupal_form_submit()
函数中发送它。
我想知道那是否行得通...
另一方面,您可以仅检查地理字段值的结构,然后利用地理编码器模块API 的geocoder()
功能以编程方式对其进行重建。
您可以使用https://www.drupal.org/node/905814#comment-4931016中描述的方法。
进行数据库备份
查看您的内容。添加一个过滤器以选择地理纬度为空的内容。
添加“视图批量操作”模块,添加批量操作字段,然后选择“执行任意php”作为操作。
$test = node_load($entity->nid);
module_load_include('inc', 'node', 'node.pages');
$test_state['values']['op'] = t('Save');
drupal_form_submit('NODENAME_node_form', $test_state, $test);
除了使用日期弹出窗口的“日期”字段变为空以外,此方法非常有效,因此,如果有日期字段,请当心。
另请注意,Google地址解析器在24小时内最多只能对2500个地址进行地址解析。
有一个Drupal 7模块,可以使用cron为您完成此操作。您可以设置每次cron运行要处理的节点数,并选择要针对其触发的内容类型。
签出:https : //www.wutime.com/downloads/automatic-geofield-update-to-render-gmaps/
geohash
吗?