Вот моя предложенная структура, я ценил бы обратную связь:
телефонное поле базы данных должно быть varchar (42) со следующим форматом:
CountryCode - Расширение Номер x
Так, например, в США, мы могли иметь:
1-2125551234x1234
Это представило бы американское число (код страны 1) с кодом зоны/числом (212) 555 и расширений 1234 года 1234.
Выделение кода страны с тире ясно дает понять код страны кому-то, кто просматривает данные. Это не строго необходимо, потому что коды страны" коды префикса " (можно считать их слева направо, и Вы всегда будете в состоянии однозначно определить страну). Но, так как коды страны имеют переменные длины (между 1 и 4 символами в данный момент), Вы не можете легко сказать сразу код страны, если Вы не используете своего рода разделитель.
я использую "x" для разделения расширения, потому что иначе действительно не было бы возможно (во многих случаях) выяснить, который был числом и который был расширением.
Таким образом можно сохранить все число, включая код страны и расширение, в поле единой базы данных, которое можно тогда использовать для ускорения запросов, вместо того, чтобы присоединиться на пользовательской функции, как Вы мучительно делали до сих пор.
, Почему я выбирал varchar (42)? Ну, прежде всего международные телефонные номера будут иметь варьировавшиеся длины, следовательно "var". Я храню тире и "x", так, чтобы объяснил "символ", и так или иначе, Вы не будете делать целочисленной арифметики по номерам телефона (я предполагаю), таким образом, имеет мало смысла пытаться использовать числовой тип. Что касается длины 42, я использовал максимальную возможную длину всех сложенных полей, на основе ответа Adam Davis, и добавил 2 для тире и 'x".
Я понял проблему. Вместо GML я попробовал использовать Vector следующим образом:
layer = new OpenLayers.Layer.Vector("KML", {
projection: map.displayProjection,
strategies: [new OpenLayers.Strategy.Fixed()],
protocol: new OpenLayers.Protocol.HTTP({
url: transformerURL + params,
format: new OpenLayers.Format.KML({
extractStyles: true,
extractAttributes: true
})
})
});
Я нашел решение в этом примере солнечных часов: http://openlayers.org/dev/examples/sundials-spherical-mercator.html : -) Надеюсь, это поможет любому, у кого такая же проблема.