답변:
README.TXT에 따르면 :
API 노트
지리 필드 필드에는 저장되는 지리 데이터에 대한 9 개의 열 정보가 있습니다. 핵심은 'WKT (Well Known Text)'형식으로 전체 지오메트리를 저장하는 'wkt'열입니다. 다른 모든 열은 WKT 열에서 파생 된 메타 데이터입니다. 열은 다음과 같습니다.
'geom'미가공 가치. 기본적으로 WKB로 저장되고 WKT로로드 됨
'geo_type'기하학 유형 (점, 선 스트링, 다각형 등)
'lat'중심 (위도 또는 Y)
'론'중심 (
위 또는 X) '위'경계 상자 상단 ( 위도 또는 최대 Y) '하단'경계 상자 하단 (위도 또는 최소 Y)
'왼쪽'경계 상자 왼쪽 (경도 또는 최소 X)
'오른쪽'경계 상자 오른쪽 (경도 또는 최대 X)
'geohash'Geom 열 값에 해당하는 Geohash제공된 위젯을 사용하여 지오 필드를 저장하면 종속 값을 계산하기 위해이 값이 geofield_compute_values 함수를 통해 전달됩니다. 기본적으로 종속 값은 WKT를 기반으로 계산되지만 다른 열을 기반으로 값을 계산하기 위해 재정의 될 수 있습니다. 예를 들어 geofield_compute_values는 다음과 같이 호출 될 수 있습니다.
geofield_compute_values ($ values, 'latlon');
위도 / 경도 열을 기준으로 wkt 필드 (및 다른 모든 필드)를 계산하여 점을 만듭니다. node_load 및 node_save를 사용하여 지오 필드 정보를 수정하는 경우 개발자는이를 기억해야합니다. 모든 열의 일관성을 유지하려면 geofield_compute_values를 통해 수정 된 지오 필드 인스턴스를 실행해야합니다.
이것은 다음과 같이 번역됩니다.
$spot->field_coordinates[LANGUAGE_NONE][0] = geofield_compute_values(
array(
'lat' => $venue->location->lat,
'lon' => $venue->location->lng,
), GEOFIELD_INPUT_LAT_LON);
이와 같은 값을 사용하여 지오 필드 데이터를 프로그래밍 방식 으로 업데이트 할 수있었습니다 .
$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
위의 답변에 언급 된 함수를 사용 하여 위도 / 경도에서 그 가치를 얻을 수 있습니다.
node-edit-form
당혹스러운 추측 : 프로세스를 통해 노드를 실행하여 지오 필드 매직을 발사 할 수 있습니다.
drupal_form_submit ()을 살펴보고 , $form_state['values']
노드 유형의 "컨텐츠 추가"양식을 수동으로 제출하여 프로그래밍 방식으로 다시 작성하여 drupal_form_submit()
함수 로 보내십시오 .
그게 효과가 있는지 궁금합니다 ...
반면 지오 필드 값의 구조를 검사 geocoder()
하고 지오 코더 모듈 API 의 기능 을 프로그래밍 방식으로 활용하여이를 재구성 할 수 있습니다.
https://www.drupal.org/node/905814#comment-4931016에 설명 된 방법을 사용할 수 있습니다 .
데이터베이스 백업을 수행
컨텐츠를 봅니다. 지오 필드 위도가 비어있는 콘텐츠를 선택하려면 필터를 추가하십시오.
Views Bulk Operations 모듈을 추가하고 bulk operations 필드를 추가 한 후 "임의의 임의 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 지오 코더의 지오 코딩에 대한 주소는 2500 시간으로 24 시간 제한됩니다.
크론을 사용 하여이 작업을 수행하는 Drupal 7 모듈이 있습니다. cron 실행 당 처리 할 노드 수를 설정하고 실행할 컨텐츠 유형을 선택할 수 있습니다.
확인하십시오 : https://www.wutime.com/downloads/automatic-geofield-update-to-render-gmaps/
geohash
?